Java ScheduledExecutorService是否会根据需要创建新线程?

Java ScheduledExecutorService是否会根据需要创建新线程?,java,executorservice,Java,Executorservice,我正在使用创建,指定线程数,如下所示: int corePoolSize = 42; ScheduledExecutorService foo = Executors.newScheduledThreadPool(corePoolSize); 根据JavaDocs,corePoolSize参数集 池中要保留的线程数,即使它们处于空闲状态 这是否意味着此ExecutorService实现可以根据需要创建多个corePoolSize线程,类似于 这是否意味着此ExecutorService实现可以

我正在使用创建,指定线程数,如下所示:

int corePoolSize = 42;
ScheduledExecutorService foo = Executors.newScheduledThreadPool(corePoolSize);
根据JavaDocs,
corePoolSize
参数集

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

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

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

是的,这正是它的意思。存在
corePoolSize
的原因是线程创建的开销。如果您希望在executor服务中触发大量短期任务,那么您可能希望在给定的时间点发现大量空闲线程


corePoolSize将确保始终存在大量正在旋转的线程。

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


核心池大小:相关:文档!你要么信任文档,要么不信任:-)看起来这不是真的。需要查看
ScheduledExecutorService
的文档,而不仅仅是
ThreadPoolExecutor
corePoolSize
概念。现在我想知道为什么它没有被称为
minimumPoolSize
…经过仔细研究。我同意你(在你被删除的帖子中)的看法,认为这有点烦人。@Michael-请解释一下你为什么这么认为。主要原因是以下句子:虽然该类继承自ThreadPoolExecutor,但一些继承的优化方法对它没有用处。特别是,由于它使用corePoolSize线程和无界队列充当固定大小的池,因此对maximumPoolSize的调整没有任何有用的效果。”