核心线程keep alive的时间
来源:8-1 线程池-1
![](http://img1.sycdn.imooc.com/user/5458620000018a2602200220-100-100.jpg)
李爽爽爽爽
2018-11-08
老师您好,课程中提到,如果线程池中运行的线程数量大于核心线程数,那么没有新任务的话,会等待一段时间再关闭多余的线程,那么,如果线程池中运行的线程数量小于核心线程数,且没有新任务,那么,这些线程会不会关闭?
写回答
1回答
-
Jimin
2018-11-08
你好,关于这个参数的理解,举个例子来说吧。
比如说线程池中最大的线程数为50,而其中只有40个线程任务在跑,相当于有10个空闲线程,这10个空闲线程不能让他一直在开着,因为线程的存在也会特别耗资源的,所有就需要设置一个这个空闲线程的存活时间。
但是需要注意,keepAliveTime和maximumPoolSize及BlockingQueue的类型均有关系。如果BlockingQueue是无界的,那么永远不会触发maximumPoolSize,自然keepAliveTime也就没有了意义。反之,如果核心数较小,有界BlockingQueue数值又较小,同时keepAliveTime又设的很小,如果任务频繁,那么系统就会频繁的申请回收线程。022018-11-09
相似问题