java – Android AsyncTask.THREAD_POOL_EXECUTOR与使用Runnables的自定义ThreadPool

我有一些我需要在
Android上同时处理的任务,我想使用某种线程池来执行此操作.我在文档中找不到在使用AsyncTask.THREAD_POOL_EXECUTOR执行AsyncTask时“幕后”实际发生的情况.

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

我意识到这个问题相当普遍,但我对并发编程相当新(除了AsyncTask本身).我不是在寻找并发编程的教程!我只是想了解Android特定的AsyncTask.THREAD_POOL_EXECUTOR是如何不同的.我认为解释将有助于将来的其他人,因为他们权衡选择使用AsyncTask vs Thread / Runnable的利弊.提前致谢!

最佳答案 AsyncTasks为您提供在执行工作任务之前和之后在UI线程上执行操作的可能性.因此,如果您不需要与UI通信,那么请使用您自己的执行程序 – 您始终可以使用处理程序实现此功能.自api 11以来,AsyncTasks正在连续执行,因为并行执行被认为难以正确实现.

如果您需要更多的灵活性,那么执行器是一种可行的方法,它们将允许您自由指定并行执行的任务数,排队等数量.

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

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

点赞