首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态线程池

动态线程池
EN

Stack Overflow用户
提问于 2015-09-11 15:31:07
回答 1查看 7K关注 0票数 6

我有一个长时间运行的过程,它倾听事件并进行一些密集的处理。

目前,我使用Executors.newFixedThreadPool(x)来控制并发运行的作业数量,但取决于一天中的时间和其他各种因素,我希望能够动态地增加或减少并发线程的数量。

如果我减少并发线程的数量,我希望当前正在运行的作业能够很好地完成。

是否有一个Java库允许我控制并动态增加或减少线程池中运行的并发线程的数量?(类必须实现ExecutorService)。

我必须自己执行吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-11 15:57:40

看看下面ThreadPoolExecutor中的API

代码语言:javascript
复制
public void setCorePoolSize(int corePoolSize)

设置线程的核心数目。这将重写构造函数中设置的任何值。

如果新值小于当前值,则多余的现有线程将在下一个空闲时终止。

如果较大,如果需要,将启动新线程来执行任何排队的任务。

初始化:

代码语言:javascript
复制
ExecutorService service = Executors.newFixedThreadPool(5); 

根据需要,使用下面的API调整线程池的大小

代码语言:javascript
复制
((ThreadPoolExecutor)service).setCorePoolSize(newLimit);//newLimit is new size of the pool 

重要提示:

如果队列已满,并且线程数的新值大于或等于前面定义的maxPoolSize,任务将被拒绝。

因此,适当地设置maxPoolSizecorePoolSize的值。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32527078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档