1)handlerThread是什么
2)handlerThread源码解析
1、handlerThread产生背景
在开发中,有时候需要,开启Thread子线程进行耗时操作;
多次创建和销毁线程是很耗系统资源的;
为了解决这个问题,引入handlerThread;
2、handlerThread是什么
HandlerThread继承自Thread,因此HandlerThread其实就是一个线程;
线程开启时也就是run方法运行起来后,线程同时创建一个含有消息队列的looper,并对外提供自己这个对象的get方法,这就是和普通的Thread不一样的地方
【handler+thread+looper】
本质上是一个thread,内部有一个looper
3、handlerThread的特点
1)handlerThread本质上是一个线程类,它继承了Thread;
2)handlerThread有自己的内部Looper对象,可以进行looper循环
3)通过获取HandlerThread的Looper对象传递给Handler对象,可以在HandlerMessage方法中执行异步任务
4)优点是不会有阻塞,减少了对性能的消耗;
缺点是不能同时进行多任务的处理,需要等待进行处理。
处理效率较低
5)与线程池注重并发不同,HandlerThread是一个串行队列,HandlerThread背后只有一个线程
4、简单的流程
创建handlerThread传入线程名称
调用 handlerThread.run()
调用 getLooper()
根据Looper获取Handler
之后做自己想要的操作
5、handlerThread源码解析
【自己看下,源码不多】
网友评论