动态线程池

我有一个长时间运行的过程,可以监听事件并进行一些紧张的处理。

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

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

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

我必须自己执行它吗?


在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,则任务将被拒绝。

所以正确设置maxPoolSizecorePoolSize值。

链接地址: http://www.djcxy.com/p/92041.html

上一篇: Dynamic Thread Pool

下一篇: Thread Management Memory Leak