Thread、Handler、HandlerThread的区别

ThreadHandlerHandlerThread的区

参考:http://waylenw.github.io/Android/android-handler-thread-usage/

 

Thread:

普通的异步线程。

Handler:

异步更新UI的,更详细的说是用来做线程间的通信的,更新UI时是子线程与UI主线程之间的通信。

Thread和Handler都比较熟,就不看了。

HandlerThread:

子线程与子线程之间的通信。

HandlerThread源码:

它的内部创建一个带有looper的线程,looper对象可以用于创建Handler类来进行调度。

 

HandlerThread使用:

1、创建HandlerThread并且start


2、创建handler并为hander设置handler(因为只有主线程里面的hander有默认的looper,新建的handler都需要自己创建looper)


3、创建一个子线程并发送消息


4、释放资源

实际使用:

这里模拟一个异步下载图片的例子:


通过点击download去下载图片并加载。


在这里handler运行在线程中,同时在该线程中,通过handler+message去有序地运行其他的线程。


优缺点

HandlerThread适合在只需要在一个工作线程(非UI线程)+任务的等待队列的形式,优点是不会有堵塞,减少了对性能的消耗,缺点是不能同时进行多任务的处理,需要等待进行处理。处理效率较低。感觉可以当做一个轻量级的线程池来用。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值