我是靠谱客的博主 动人蜜粉,最近开发中收集的这篇文章主要介绍JDK1.6中线程池更好了,有allowCoreThreadTimeOut,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

要做异步任务执行队列,具体需求如下:

1. 有个线程池用于执行任务

2. 有个有界队列,用于缓存未执行的任务

3. 没有任务执行时,我希望线程池中的线程停掉


这看似是个很正常的需求,但是用JDK1.5(我的工作地方JDK还是1.5的)实现,真得很困难的。

ThreadPoolExecutor中线程池有corePoolSize 和 maximumPoolSize两个参数。JDK1.5中线程池至少保持corePoolSize的线程,所以为了满足上面的需求,corePoolSize必须被设置为0。但是,JDK1.5中队列不满的话,是不会创建大于corePoolSize大小的线程数的。也就是,corePoolSize为0时,队列满了,才会创建新的线程,这显然不满足我的需求。


今天看JDK1.6的文档时,发现ThreadPoolExecutor多了一个allowCoreThreadTimeOut方法。这个方法是允许线程数低于corePoolSize时,线程也因为空闲而终止。有了这个方法,实现上面的需求就非常简单了。将corePoolSize 和 maximumPoolSize设置为相同的大小,allowCoreThreadTimeOut设置为true,加上一个有界队列,OK了。


然后又谷歌了下,原来有人和我有同样的诉求,然后就加了新的方法。详见http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6233235




转载于:https://my.oschina.net/zhaojy/blog/210614

最后

以上就是动人蜜粉为你收集整理的JDK1.6中线程池更好了,有allowCoreThreadTimeOut的全部内容,希望文章能够帮你解决JDK1.6中线程池更好了,有allowCoreThreadTimeOut所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(33)

评论列表共有 0 条评论

立即
投稿
返回
顶部