线程池3-6节ScheduledThreadPool
视频演示中调用threadPool.scheduleAtFixedRate方法时,为什么输出不是像:
pool-1-thread-1
pool-1-thread-2
pool-1-thread-3
pool-1-thread-4
pool-1-thread-5
pool-1-thread-6
...
pool-1-thread-10呢?
按照之前的讲解,在线程数还没达到corePoolSize(10)的时候,即便有线程空闲,当加入新任务时,不也是应该创建新线程吗?为什么控制台的输出会是
pool-1-thread-1
pool-1-thread-1
pool-1-thread-2
pool-1-thread-1
pool-1-thread-3
pool-1-thread-2
...?
27
收起
正在回答
2回答
同学你好 ,线程执行时,添加新线程的规则,如下所示:
最开始线程总数小于corePoolSize时,即使有线程处于空闲状态,新任务到来时也会创建新的线程,但并不是一定会使用新创建的线程,会优先使用空闲线程。也就是说当线程总数小于corePoolSize时,是会创建新的线程,但并不是一定会使用新的线程。则当线程总数大于等于corePoolSize,线程进入等待不会直接进行创建。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星