我正在使用Executors.newScheduledThreadPool()
创建一个ScheduledExecutorService
,指定线程数,如下所示:
int corePoolSize = 42;
ScheduledExecutorService foo = Executors.newScheduledThreadPool(corePoolSize);
根据JavaDocs,corePoolSize
参数集
要保留在池中的线程数,即使它们处于空闲状态。
这是否意味着此ExecutorService
实现可以根据需要创建 corePoolSize
多个线程,类似于缓存线程池?
No. 正确答案是否定的,ScheduledExecutorService 不会生成新线程。
在此处查看答案
这是否意味着此执行器服务实现可以根据需要创建
corePoolSize
多个线程?
是的,这正是它的意思。corePoolSize
存在的原因是线程创建的费用。如果希望在执行程序服务中触发大量短期任务,则可能需要在给定时间点发现大量空闲线程。
与其让这些线程死亡,只是在很短的时间内被新创建的线程替换,corePoolSize
将确保始终存在许多旋转线程。