Java线程池中线程的生命周期

Posted jaxyoun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java线程池中线程的生命周期相关的知识,希望对你有一定的参考价值。

设:我们有一个coreSize=10,maxSize=20,keepAliveTime=60s,queue=40
1、池初始化时里面没有任何线程。
2、当有一个任务提交到池就创建第一个线程。
3、若继续提交任务,有空闲线程就调拨空闲线程来处理任务?若没有线程空闲则再新建一个线程来处理,如此直到coreSize。【预热阶段
4、若继续提交任务,有空闲线程就调拨空闲线程来处理任务,如果没有空闲线程(10个)则将任务缓存到queue中排队等待。
5、若继续提交任务,而已有线程不空闲,且queue也满了,则新建线程,并将最新的任务优先提交给新线程处理。
6、若继续提交任务,且所有线程(20个)仍不空闲,queue也是满的,此时就会触发池的拒绝机制。
8、一旦有任何线程空闲下来就会从queue中消费任务,直到queue中任务被消费完。
9、当总忙碌线程个数不超过coreSize时,闲暇线程休息keepAliveTime过后会被销毁。
10、而池中一直保留coreSize个线程存活。

以上是关于Java线程池中线程的生命周期的主要内容,如果未能解决你的问题,请参考以下文章

Java线程生命周期及状态Java线程安全的的理解Thread与RunnableJava守护线程

Java多线程与并发——线程生命周期和线程池

死磕 java线程系列之线程池深入解析——生命周期

死磕 java线程系列之线程池深入解析——生命周期

Java线程池原理

Java多线程 线程池的生命周期及运行状态