使用线程池的好处是减少线程创建和销毁上所花费的时间及系统资源的开销,解决资源不足的问题。
- 重用存在的线程,减少线程创建、消亡的开销
- 有效控制最大并发线程数
- 提供定时执行,定期执行,单线程,并发数控制等功能
Android 中的线程池都直接或间接通过配置 ThreadPoolExecutor 来实现不同特性的线程池,常见线程池为:
-
newCachedThreadPool: 只有非核心线程,最大线程数非常大,如果线程池中的线程都活动时,有新任务会创建新线程,否则会利用空闲线程,线程空闲时间为60秒,超过60秒会被回收。
适合大量的耗时少的任务。 -
newFlxedThreadPool: 只有核心线程,并且数量固定,队列没有限制,如果线程池中的所有线程都活动时,新任务加入队列等待执行,空闲线程不回被释放,还会占用一定的系统资源。
更快的相应外界请求。 -
newScheduledThreadPool: 核心线程数固定,非核心线程没有限制,空闲时会直接被回收。
适合执行定时任务及固定周期的重复任务 - newSingleThreadExecutor: 只有一个核心线程,确保所有任务都在同一线程中按顺序完成。
线程池工作流程图
![](https://img.haomeiwen.com/i6987676/5a4dd520c9d3da51.png)
网友评论