ava FixedThreadPool 当空闲的时候会释放掉线程吗?如果不会,哪个线程池是既可以限定大小,又可以自动释放资源的?
https://www.oschina.net/quest...
ava FixedThreadPool 当空闲的时候会释放掉线程吗?如果不会,哪个线程池是既可以限定大小,又可以自动释放资源的?
https://www.oschina.net/quest...
不会
自己 new
线程池,coreSize
给 0
就可以了
比如下面这样,就是最小0
,最大100
的线程池,线程空闲30秒就会释放
new ThreadPoolExecutor(0, 100, 30, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
4 回答1.3k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答724 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
newFixed
不会释放,你看他的参数:corePoolSize
和maximumPoolSize
相等,所以无法“扩容”,更不能释放了。线程池的释放,或者叫“缩容”,是指从
maximumPoolSize
缩容到corePoolSize
Executors 接口没提供这个选项,但你可以自己 new :
解释下参数:核心20,即最小会释放到20,最大40,达到40后如果空闲会按60L的最大空闲时间释放空闲线程。
附一张线程池核心流程图