gpt4 book ai didi

java - Android 中的自定义最大 asyncTasks

转载 作者:行者123 更新时间:2023-11-30 04:55:28 25 4
gpt4 key购买 nike

我正在创建一个应用程序,它需要同时执行 128 个任务。我读到最大值是 128,但在我的模拟器上它只能做 20。如何让他做更多或如何编辑最大异步任务?

一些信息:API 29

我用这种方法调用它们:

@TargetApi(11)
static public <T> void executeAsyncTask(AsyncTask<T, ?, ?> task, T... params) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
} else {
task.execute(params);
}
}

这应该可以工作,但它只能同时运行 20 个

最佳答案

AsyncTask.THREAD_POOL_EXECUTOR 的默认最大线程池大小为 20,这就是为什么您看不到并发执行的线程池大小的原因。

如果你想要更大的池大小,你可以定义你自己的Executor:

@TargetApi(11)
static public <T> void executeAsyncTask(AsyncTask<T, ?, ?> task, T... params) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
Executor executor = new ThreadPoolExecutor(1, 128,
5, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>());
task.executeOnExecutor(executor, params);
} else {
task.execute(params);
}
}

关于java - Android 中的自定义最大 asyncTasks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59270102/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com