采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,假设我们设置corepoolsize=3, maximumpoolsize=10。 1. 比如第一次提交任务,是先放到队列中,然后接着创建好一个线程再从队列中获取任务,还是直接创建线程并运行了? 2. 还有当大于等于核心线程数之后,是不是新任务都直接放到队列中,然后,如果有空闲线程,由空闲线程取任务并执行,如果3个线程一直占用线程一直不空闲,那么这种情况只有当队列满的时候就才会创建新线程了啊?
同学好,
要解决上面的问题只要了解线程池的执行流程就不是什么难事了,
线程池的执行流程如下:
(1)提交任务后,线程池先判断线程数是否达到了核心线程数(corePoolSize)。如果未达到线程数,则创建核心线程处理任务;否则,就执行下一步;
(2)接着线程池判断任务队列是否满了。如果没满,则将任务添加到任务队列中;否则,执行下一步;
(3)接着因为任务队列满了,线程池就判断线程数是否达到了最大线程数。如果未达到,则创建非核心线程处理任务;否则,就执行饱和策略,默认会抛出RejectedExecutionException异常。
了解了,谢谢老师。因为之前你有一个图示意说队列是“接客”的,所以就有点晕(=_=)了
哈哈,话说多容易产生误解,课程相关的问题,欢迎同学随时提问,加油:)
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.8k 27
2.7k 22
1.3k 15
1.5k 14
1.3k 14