计划执行器服务是否会根据需要创建新线程



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

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

根据JavaDocs,corePoolSize参数集

要保留在池中的线程数,即使它们处于空闲状态。

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

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

在此处查看答案

这是否意味着此执行器服务实现可以根据需要创建corePoolSize多个线程?

是的,这正是它的意思。corePoolSize存在的原因是线程创建的费用。如果希望在执行程序服务中触发大量短期任务,则可能需要在给定时间点发现大量空闲线程。

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

相关内容

  • 没有找到相关文章

最新更新