Java的线程池为什么要用阻塞队列呢?

发布于 2022-09-07 11:37:59 字数 36 浏览 16 评论 0

线程池为什么要用阻塞队列呢?使用一般的队列也能完整任务啊?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

遇见了你 2022-09-14 11:37:59

一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度,就无法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务。

沙与沫 2022-09-14 11:37:59

阻塞队列主要是用于生产者-消费者模型的情况。
比如一个线程从一个空的阻塞队列中取元素,此时线程会被阻塞直到阻塞队列中有了元素。当队列中有元素后,被阻塞的线程会自动被唤醒(不需要我们编写代码去唤醒)。这样提供了极大的方便性。
如果使用非阻塞队列,它不会对当前线程产生阻塞,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。

锦欢 2022-09-14 11:37:59

简单的一个场景,消费者一端不一定是时时提交任务就能马上执行,可能有很多因素,比如计算或者IO等资源没办法马上就位,所以有等待,但是任务队列也不一定就无限大,所以才有了阻塞队列,在任务池已满且队列已经有很多任务时,需要阻塞等待

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文