【问题标题】:What does it means "corePoolSize", param of newScheduledThreadPool() method?newScheduledThreadPool() 方法的参数“corePoolSize”是什么意思?
【发布时间】:2016-03-20 07:22:49
【问题描述】:

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

如果我输入一个较大的数值会发生什么,如果我输入一个较小的数值会发生什么?

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

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

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

【问题讨论】:

    标签: java multithreading pool


    【解决方案1】:

    ThreadPoolExecutor的javadoc中有详细解释——摘录:

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

    所以它根据执行器的状态定义是否应该创建线程。

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

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2021-03-04
      • 1970-01-01
      • 2020-08-18
      • 2013-07-07
      • 2020-12-16
      相关资源
      最近更新 更多