它意味着什么" corePoolSize",newScheduledThreadPool()方法的参数?

时间:2015-12-14 17:44:16

标签: java multithreading pool

我不清楚它是什么意思" corePoolSize" java.util.concurrent.Executors类中newScheduledThreadPool()方法的参数。

如果我输入更高的数字值会发生什么?如果我输入更低的数字值会发生什么?

// corePoolSize = 1;
java.util.concurrent.Executors.newScheduledThreadPool(corePoolSize);

// corePoolSize = 5;
java.util.concurrent.Executors.newScheduledThreadPool(corePoolSize);

定义该值的正确方法是什么?

1 个答案:

答案 0 :(得分:4)

ThreadPoolExecutor的javadoc中提取详细解释 - 提取:

  

当在方法execute(Runnable)中提交新任务且运行的线程少于corePoolSize时,即使其他工作线程处于空闲状态,也会创建一个新线程来处理该请求。如果运行的线程数超过corePoolSize但小于maximumPoolSize,则只有在队列已满时才会创建新线程。

因此它定义是否应该创建线程,具体取决于执行程序的状态。

对于ScheduledExecutorService,如果您不打算在给定时间运行多个任务,则corePoolSize为1可能更有效。并且如果需要,它不会阻止创建更多线程。