java - Android AsyncTask.THREAD_POOL_EXECUTOR 与自定义 ThreadPool 与 Runnables

标签 java android multithreading android-asynctask threadpool

我有一些任务需要在 Android 上并发处理,我想使用某种线程池来完成这些任务。当使用 AsyncTask.THREAD_POOL_EXECUTOR 执行 AsyncTask 时,我无法在文档中找到“幕后”实际发生的情况。

我的问题是:通过将 AsyncTasks 与 AsyncTask.THREAD_POOL_EXECUTOR 结合使用而不是通过 Runnables 实现自定义 ThreadPool,我会失去什么? (让我们谈谈后蜂窝)。

我意识到这个问题很笼统,但我对并发编程还很陌生(除了 AsyncTask 本身)。我不是在寻找有关并发编程的教程!我只是想了解 Android 特定的 AsyncTask.THREAD_POOL_EXECUTOR 有何不同。我认为解释会对将来的其他人有所帮助,因为他们会权衡选择使用 AsyncTask 与 Thread/Runnable 的利弊。提前致谢!

最佳答案

AsyncTasks 为您提供了在执行工作任务之前和之后在 UI 线程上执行操作的可能性。所以,如果你不需要与 UI 通信,那么使用你自己的执行器——你总是可以使用处理程序来实现它。自 api 11 以来,AsyncTasks 正在串行执行,因为并行执行被认为难以正确实现。

如果您需要更大的灵 active ,那么执行器是一个不错的选择,它们将允许您自由指定要并行执行的任务数、放入队列的任务数等。

如果您对细节感兴趣,可以随时查看来源:

http://androidxref.com/4.4.3_r1.1/xref/development/samples/training/bitmapfun/BitmapFun/src/main/java/com/example/android/bitmapfun/util/AsyncTask.java

关于java - Android AsyncTask.THREAD_POOL_EXECUTOR 与自定义 ThreadPool 与 Runnables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24414045/

相关文章:

java - 异常重用 HttpClient https 连接

python - 在 Python 2.x 中同时连接和处理多个原始套接字

c++ - 线程更新类对象

c - pthread_mutex_lock 等待锁定高度满足的互斥体正好 60 秒(如果互斥体无法立即锁定)

java - JFrame - 从 keylistener 类访问我的窗口

java - 固定线程池和缓存线程池的参数差异

java - Spring Data Rest (SDR) 错误?持久实体不能为空

android - 开始 Activity 而不显示它

android - 在 sql 数据库和 json 响应之间比较数据的有效方法

java - 在不同模式的android中打开手电筒