旅行网站开发需求说明书,网站编程语言哪个好,wordpress导出数据库,2019年长春网站建设最新价格表小王学习录 今日鸡汤阻塞队列什么是阻塞队列什么是生产者消费者模型阻塞队列的使用阻塞队列的代码实现1. 实现一个普通队列2. 在普通队列里加入阻塞特性完善阻塞队列消息队列在数据结构的学习中我们知道队列是一种先进先出的数据结构, 但是存在一些特殊的队列, 比如: 优先级队列… 小王学习录 今日鸡汤阻塞队列什么是阻塞队列什么是生产者消费者模型 阻塞队列的使用阻塞队列的代码实现1. 实现一个普通队列2. 在普通队列里加入阻塞特性完善阻塞队列 消息队列 在数据结构的学习中我们知道队列是一种先进先出的数据结构, 但是存在一些特殊的队列, 比如: 优先级队列(Priority Queue), 阻塞队列和消息队列
今日鸡汤
一切伟大的行动和思想, 都有一个微不足道的开始
阻塞队列
什么是阻塞队列
相比于普通队列来说, 阻塞队列的特殊之处在于: 当队列中没有元素时执行出队的操作, 会使线程陷入阻塞. 直到另一个线程在队列里增加元素(使得队列不为空).当队列已经满了还要往队列里增加元素时, 也会陷入阻塞 利用阻塞队列的特性, 可以实现一个生产者消费者模型
什么是生产者消费者模型
往队列里添加元素即为生产者, 从队列里拿出元素即为消费者, 使用生产者消费者模型有如下好处:
实现生产者和消费者间的解耦合削峰填谷, 保证系统稳定性阻塞队列的使用
我们知道在队列中, 入队是offer, 出队是poll. 而在阻塞队列中, 入队是put, 出队是take, 以下是阻塞队列的代码使用和运行结果
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;public class ThreadDome1 {public static void main(String[] args) {BlockingQueueInteger blockingQueue= new LinkedBlockingQueue();Thread consumer = new Thread(()-{while(true){try {int value = blockingQueue.take();System.out.println("消费元素为:" + value);} catch (InterruptedException e) {throw new RuntimeException(e);}}