线程池是把一个或多个线程通过统一的方式进行调度和重复使用的技术。
避免了因为线程过多而带来使用上的开销。
在安卓开发中,为了更好的性能体验,我们在选择线程池的时候,需要从具体需求来考虑,主要考虑以下几方面:
1、从任务的优先级;
2、任务的执行时间长短;
3、任务的性质(CPU密集/ IO密集);
4、任务的依赖关系这四个角度来分析;
性质不同的任务可用使用不同规模的线程池分开处理:
因此,我们需要知道某一个任务是否是CPU消耗型的任务(定容线程池),还是说IO类型的任务(缓存线程池),充分的调用CPU资源。那在此之前,我们需要知道两个概念:
Wall Duration:代码执行时间
CPU Duration:代码消耗CUP的时间(重点指标,优化方向)。
这里就需要借助SysTrace工具了(具体方法可自行搜索)最终查看xxx.html文件,如下图
通过SysTrace查看 Wall Duration 与 CPU Duration,
消耗的CPU时间片较多,我们就把它放在定容线程池里调度,
消耗的时间片少,我们就把它放在缓存线程池中。