核心线程keep alive的时间

来源:8-1 线程池-1

李爽爽爽爽

2018-11-08

老师您好,课程中提到,如果线程池中运行的线程数量大于核心线程数,那么没有新任务的话,会等待一段时间再关闭多余的线程,那么,如果线程池中运行的线程数量小于核心线程数,且没有新任务,那么,这些线程会不会关闭?

写回答

1回答

Jimin

2018-11-08

你好,关于这个参数的理解,举个例子来说吧。
比如说线程池中最大的线程数为50,而其中只有40个线程任务在跑,相当于有10个空闲线程,这10个空闲线程不能让他一直在开着,因为线程的存在也会特别耗资源的,所有就需要设置一个这个空闲线程的存活时间。

但是需要注意,keepAliveTime和maximumPoolSize及BlockingQueue的类型均有关系。如果BlockingQueue是无界的,那么永远不会触发maximumPoolSize,自然keepAliveTime也就没有了意义。反之,如果核心数较小,有界BlockingQueue数值又较小,同时keepAliveTime又设的很小,如果任务频繁,那么系统就会频繁的申请回收线程。

0
2
Jimin
回复
李爽爽爽爽
我感觉你没仔细看完我的回复,你再看看最后一部分
2018-11-09
共2条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程