线程池工作流程:
当有任务来请求时,
1,先判断正在运行的线程数量,如果正在运行的线程数量小于corePoolSize,就马上创建核心线程执行该任务,正在运行的线程数量大于corePoolSize,就将请求任务放在堵塞队列。
2,这时堵塞队列满了且正在运行的线程数小于maximumPoolSize,就创建非核心线程执行该任务。堵塞队列满了且正在运行的线程数大于maximumPoolSize,就请求堵塞队列。
3,当一个运行线程数大于corePoolSize且超过空闲线程时间KeepAliveTime,就会将空余线程销毁到corePoolSize为止。
线程池底层原理

相关文章: