类别
- AsyncTask
底层实现:线程池+handler - IntentService
底层实现:HandlerThread 继承自普通service 具备异步线程的特性以及service不受activity生命周期的影响 - HandlerThread
具有消息循环的线程 内部可以使用Handler
比较
- AsyncTask
doInBackground
在线程池中进行
限制:
1.必须在主线程中加载
2.AsyncTask对象必须在主线程中创建
3.execute
必须在ui线程中调用 并且只能调用一次
默认情况下 AsyncTask是串行执行的
- HandlerThread
继承自Thread
run方法中使用Looper
此run方法是一个无限循环 不需要使用Handler时quit
或者quitsafely
执行终止
HandlerThread和Thread的区别:
Thread会创建多个匿名线程 占用系统资源
HandlerThread 自带Looper 通过消息队列重复使用线程 后续的任务会被延迟执行不会阻碍ui线程(应用启动会被分配一个主线程ActivityThread,这个就是ui线程)
- 线程池
特性:
1.重用线程池中的线程 避免因为线程的创建和销毁带来性能开销
2.控制线程最大并发书 避免大量线程抢占系统资源导致阻塞
3.可以对线程进行简单的管理
线程真正的实现者:ThreadPoolExcutor
种类:主要分为4类 通过 Excutors
提供的工厂方法得到
FixedThreadPool
CatchedThreadPool
FixedThreadPool
FixedThreadPool
网友评论