java如何更改ScheduledExecutorService中的线程池大小?
我需要带有动态线程池的ScheduledExecutorService。我想动态更改线程池大小。我该怎么做
class ExecutorTask {
private ScheduledExecutorService service;
public void add(Task task) {
// I need thread pool size == count added tasks.
service.scheduleAtFixedRate(this::start, 0, 10, TimeUnit.SECONDS);
}
}
也许你能给我建议另一个线程池
# 1 楼答案
你可以用ScheduledThreadPoolExecutor轻松做到这一点
注意,继承的方法setMaximumPoolSize(int)有no effect on ScheduledThreadPoolExecutor。要更改池大小,需要更改corePoolSize:
# 2 楼答案
也许这就是您在Executors Util类中寻找的:
# 3 楼答案
您可以使用
setCorePoolSize(int)
方法来实现这一点还可以使用
Executors.newCachedThreadPool
将线程池大小创建为ThreadPoolExecutor
如果需要执行新任务,
ThreadPoolExecutor
会创建新线程,并使用Executors.newCachedThreadPool()
重用现有线程