我不清楚类java.util.concurrent.Executors中newScheduledThreadPool()方法的“ corePoolSize”参数是什么意思。
如果我输入较高的数值会发生什么,如果我输入较低的数值会发生什么?
// corePoolSize = 1; java.util.concurrent.Executors.newScheduledThreadPool(corePoolSize);
要么
// corePoolSize = 5; java.util.concurrent.Executors.newScheduledThreadPool(corePoolSize);
定义该值的正确方法是什么?
在ThreadPoolExecutor的javadoc中详细说明了-提取:
当在method中提交新任务
execute(Runnable)
并且corePoolSize
运行的线程少于线程数量时,即使其他工作线程处于空闲状态,也会创建一个新线程来处理请求。如果正在运行的线程多于corePoolSize
但少于maximumPoolSize
线程,则仅在队列已满时才创建新线程。
因此,它根据执行程序的状态来定义是否应创建线程。
对于a ScheduledExecutorService
,如果您不打算在给定时间运行多个任务,则a corePoolSize
的效率可能更高。而且,如果需要,它不会阻止创建更多线程。