1、线程池中阻塞队列的作用?
一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度,就无法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务。
阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线程,使得线程进入wait状态,释放cpu资源。
阻塞队列自带阻塞和唤醒功能,不需要额外处理,无任务执行时,线程池利用阻塞队列的take方法挂起,从而维持核心线程的存活,不至于一直占用cpu资源
2、为什么先添加队列,而不是先创建最大线程?
在创建新线程的时候,是要获取全局锁的,这个时候其他的就得阻塞,影响了整体效率。超过创建的最大线程数就会被线程池拒绝。