![这里写图片描述](https://img-blog.csdn.net/20180802151128991?watermark/2/text/aHR0cHM6Ly9ibG9
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
nLmNzZG4ubmV0L3Jpa2thdGhld29ybGQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
上面的构造方法中的参数分别代表:核心线程数、线程池能容纳的最多线程数、非核心线程闲置的超时时长、用于指定keepAliveTime的单位、线程池的队列、线程工厂。
ThreadPoolExecutor执行任务大致遵守如下规则:
(1)如果线程池的线程数未达到最大容纳量,那么会直接启动一个核心线程来执行任务。
(2)如果线程池中的线程数已达到或者超过最大容纳量,那么任务会被插入到任务队列中排队等待执行。
(3)如果步骤2中的任务队列已满,如果这个时候线程池中的线程数未达到最大容纳量,则立刻执行一个非核心线程来执行任务。
(4)如果步骤3中线程数量已经达到最大值,那么就拒绝执行此任务。会通过ThreadPoolExecutor的rejectedExecution来通知调用者。
在AsyncTask(两个线程中的THREAD_POOL_EXECUTOR)就明显的体现了线程池的特点: