概述
2019独角兽企业重金招聘Python工程师标准>>>
要做异步任务执行队列,具体需求如下:
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复