1、提交一个线程任务,首先判断线程池中是否存在空闲线程;
存在空闲线程,则直接分配一个空闲线程,用于执行线程任务。
不存在空闲线程,则线程池会判断当前“存活的线程数”是否超出核心线程数(corePoolSize)。
没有超出核心线程数(corePoolSize),线程池会创建一个新的核心线程去处理新线程任务。
超出核心线程数(corePoolSize),线程池检查工作队列是否已满。
工作队列未满,则将该线程任务放入工作队列进行等待,线程池如果出现空闲线程,将从工作队列中按照FIFO的规则取出1个线程任务分配执行。
工作队列已满,判断是否超出最大线程数
当前“存活线程数”没有超出最大线程数(maximumPoolSize),则创建一个新线程(非核心线程)执行新线程任务
当前“存活线程数”已超过最大线程数(maximumPoolSize),直接采用拒绝策略处理新线程任务。