我有一个长时间运行的过程,它倾听事件并进行一些密集的处理。
目前,我使用Executors.newFixedThreadPool(x)来控制并发运行的作业数量,但取决于一天中的时间和其他各种因素,我希望能够动态地增加或减少并发线程的数量。
如果我减少并发线程的数量,我希望当前正在运行的作业能够很好地完成。
是否有一个Java库允许我控制并动态增加或减少线程池中运行的并发线程的数量?(类必须实现ExecutorService)。
我必须自己执行吗?
发布于 2015-09-11 15:57:40
看看下面ThreadPoolExecutor中的API
public void setCorePoolSize(int corePoolSize)设置线程的核心数目。这将重写构造函数中设置的任何值。
如果新值小于当前值,则多余的现有线程将在下一个空闲时终止。
如果较大,如果需要,将启动新线程来执行任何排队的任务。
初始化:
ExecutorService service = Executors.newFixedThreadPool(5); 根据需要,使用下面的API调整线程池的大小
((ThreadPoolExecutor)service).setCorePoolSize(newLimit);//newLimit is new size of the pool 重要提示:
如果队列已满,并且线程数的新值大于或等于前面定义的maxPoolSize,任务将被拒绝。
因此,适当地设置maxPoolSize和corePoolSize的值。
https://stackoverflow.com/questions/32527078
复制相似问题