我在阅读关于循环程序的内容,以及关于执行程序线程池的内容,它们似乎在做完全相同的事情……还是我缺少了什么?
A Looper
管理线程将运行的任务。它将它们放入队列,然后线程接受下一个任务。Looper绑定到特定线程。
一个Executor
包封管理和分配任务,以不同的线程。如果您将线程池的大小固定为1,那么我想它的设计与Looper相似,因为它只会使该线程的工作排队。如果您的线程池的大小大于1,则它将设法将任务分配给下一个可用的线程来执行工作,换句话说,它将在所有线程之间分配任务。
编辑:推荐阅读:http : //developer.android.com/reference/java/util/concurrent/package-summary.html
执行者更灵活。对于Android,我唯一真正使用Looper的地方是尝试使Handler通过后台线程(甚至可能在ExecutorService中)与主线程进行通信时。例如:
Handler mainThreadHandler = new Handler(Looper.getMainLooper());
mainThreadHandler.post(new Runnable...); //runs on main thread
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句