阻塞队列是一种特殊的队列,其也遵守队列 "先进先出" 的原则;
阻塞队列是一种线程安全的数据结构,并且具有以下特性:
当队列满的时候,继续入队列就会阻塞,直到有其他线程从队列中取走元素;
当队列空的时候,继续出队列也会阻塞,直到有其他线程往队列中插入元素;
阻塞队列的一个典型应用场景就是 "生产者消费者模型",这是⼀种非常典型的开发模型;
生产者消费者模型就是通过⼀个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取;
使用阻塞队列实现生产者消费者模型的好处:
1. 阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力;(削峰填谷)
2. 阻塞队列也能使生产者和消费者之间解耦合;
Java 标准库中的阻塞队列:


BlockingQueue 是一个接口,真正实现的类是 LinkedBlockingQueue,ArrayBlockingQueue,PriorityBlockingQueue 等;
put 方法用于阻塞式的入队列,take 用于阻塞式的出队列,BlockingQueue 也有 offer,poll,peek 等方法,但是这些方法并不带有阻塞特性;
下面就来实现一个阻塞队列,并基于该阻塞队列实现生产者消费者模型;
讯享网


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/142491.html