请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

核心线程keep alive的时间

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

正在回答 回答被采纳积分+3

1回答

Jimin 2018-11-08 22:21:05

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

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

0 回复 有任何疑惑可以回复我~
  • 提问者 李爽爽爽爽 #1
    老师您好,我的意思是,如果线程池中最大线程数为50,核心线程数为30,这时候,有20个线程在跑,5个线程空闲,那么这5个空闲的线程,会什么时候关闭,根据keepAliveTime的时间来吗
    回复 有任何疑惑可以回复我~ 2018-11-09 00:09:44
  • Jimin 回复 提问者 李爽爽爽爽 #2
    我感觉你没仔细看完我的回复,你再看看最后一部分
    回复 有任何疑惑可以回复我~ 2018-11-09 00:11:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信