android 程序排队执行,关于Java:Android Looper和执行程序线程池之间的差异

我正在阅读关于循环程序的内容,以及关于执行程序线程池的内容,它们似乎在做完全相同的事情……还是我缺少了什么?

我不同意这一点,如果您查看该执行程序教程,它将一次触发线程5

抱歉,是我的错

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

刚刚看到了您的网站。 如果您在上面放3个android面试问题,那就太好了

@ user3430459当然,一旦我有时间去做。 :)

@ trevor-e我想您的意思是写" ExecutorThreadPool"而不是" Executor"。 ExecutorThreadPool管理任务并将任务分配给池化线程(如果有的话),就像您解释得差不多。 执行程序是用于执行可运行任务的对象。

让我补充一下,本地代码可以使用android looper。

Android Looper系统由Looper类,Handler类,MesseageQueue类组成。一个弯针被限制到一个线程。

从Andorid 4.0开始,MessageQueue由连接的Java代码和C代码实现。您可以通过本机代码或Java代码将消息发送到同一MessageQueue。

所以区别是:

Looper具有一个线程很简单,但是ExecutorThreadPool具有一个或多个线程非常复杂且灵活。

本地代码可以方便地使用Looper。

此外,Looper和Handler通常在Android代码中使用。一些android开发人员对Handler比ExecutorThreadPool更熟悉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值