线程池为什么要用阻塞队列呢?使用一般的队列也能完整任务啊?
3 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
阻塞队列主要是用于生产者-消费者模型的情况。
比如一个线程从一个空的阻塞队列中取元素,此时线程会被阻塞直到阻塞队列中有了元素。当队列中有元素后,被阻塞的线程会自动被唤醒(不需要我们编写代码去唤醒)。这样提供了极大的方便性。
如果使用非阻塞队列,它不会对当前线程产生阻塞,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。
MM们
TA贡献1886条经验 获得超2个赞
简单的一个场景,消费者一端不一定是时时提交任务就能马上执行,可能有很多因素,比如计算或者IO等资源没办法马上就位,所以有等待,但是任务队列也不一定就无限大,所以才有了阻塞队列,在任务池已满且队列已经有很多任务时,需要阻塞等待
添加回答
举报
0/150
提交
取消