饱和策略问题

来源:6-13 线程池饱和策略之终止策略

love_

2020-04-14

核心线程固定为2个
最大线程固定5个
有界阻塞队列为7
结果:只有启动了三个线程
图片描述

核心线程固定为2个
最大线程固定5个
有界阻塞队列为8
结果:只有启动了2个线程

当阻塞队列为5的时候,又启动了5个,没理解为什么这样,,阻塞队列越大,启动线程数越趋向核心线程,反而最大线程无效!

写回答

1回答

张小喜

2020-04-14

这取决于你提交了多少个线程任务,我猜你也就提交了不到十个任务吧。
线程池接收任务的过程是这样,比如核心2,最大5,队列5。提交第一个和第二个任务,会使用核心线程执行,提交第三个到第七个任务,会放到队列中暂存,提交第八个到第十个任务,回启动最大线程执行,提交第十一个或更多,会触发拒绝策略。
你的问题,就是因为队列越大,被暂存的任务就越多,从而导致不能启动最大线程。

0
1
love_
明白了,感谢老师回答
2020-04-15
共1条回复

Java高效编程技巧实践 告别996

可以改变的编程效率

1451 学习 · 326 问题

查看课程