16

Executors.newScheduledThreadPool()用来创建一个ScheduledExecutorService,指定线程数,如下所示:

int corePoolSize = 42;
ScheduledExecutorService foo = Executors.newScheduledThreadPool(corePoolSize);

根据 JavaDocs,corePoolSize参数集

保留在池中的线​​程数,即使它们是空闲的。

这是否意味着此ExecutorService实现可能会根据需要创建多个corePoolSize线程,类似于缓存线程池

4

2 回答 2

14

不。正确答案是否定的,ScheduledExecutorService 不会产生新线程。

在这里查看答案

于 2012-07-26T22:17:25.510 回答
6

这是否意味着这个 ExecutorService 实现可能会根据需要创建多个corePoolSize线程?

是的,这正是它的意思。存在的原因corePoolSize是线程创建的开销。如果您希望在您的执行器服务上触发大量短期任务,您可能希望在给定的时间点找到大量空闲线程。

与其让这些线程死掉,只是在很短的时间内被新创建的线程替换,corePoolSize这将确保始终有许多旋转线程。

于 2012-06-25T21:13:52.440 回答