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的调整没有任何有用的效果。”