我正在使用Executors.newScheduledThreadPool()
创建ScheduledExecutorService
,指定线程数,如下所示:
int corePoolSize = 42;
ScheduledExecutorService foo = Executors.newScheduledThreadPool(corePoolSize);
根据JavaDocs,corePoolSize
参数设置
要保留在池中的线程数,即使它们处于空闲状态。
这是否意味着此ExecutorService
实施可能会根据需要创建超过corePoolSize
个帖子,类似于cached thread pool?
答案 0 :(得分:8)
没有。正确的答案是否定的,ScheduledExecutorService不会产生新的线程。
答案 1 :(得分:6)
这是否意味着此ExecutorService实现可能会根据需要创建超过
corePoolSize
个线程?
是的,这正是它的含义。 corePoolSize
存在的原因是线程创建的代价。如果您希望在执行程序服务中触发大量短期任务,您可能希望在给定的时间点找到大量空闲线程。
不是让这些线程死掉,而是在很短的时间内被新创建的线程替换,corePoolSize
将确保始终存在许多旋转线程。