【并发编程系列8】阻塞队列之ArrayBlockingQueue,LinkedBlockingQueue,LinkedBlockingDeque原理分析
ArrayBlockingQueue,LinkedBlockingQueue,LinkedBlockingDeque原理分析 什么是阻塞队列 队列Queue接口核心方法 阻塞队列BlockigQueue接口核心方法 ArrayBlockingQueue 模拟实现生产者消费者 初始化队列 添加元素(生产者) 获取元素(消费者) LinkedBlockingQueue 初始化队列 添加元素(生产者) 获取元素(消费者) LinkedBlockingDeque 初始化队列 添加元素(生产者) 从First添加 从Last添加 获取元素(消费者) 从First获取 从Last获取 总结 什么是阻塞队列 阻塞队列有两个特点: 当队列中没有元素时,从队列中获取元素会被阻塞 当队列满了时,添加元素会被阻塞 阻塞队列常用于生产者和消费者的场景,生产者是向队列里添加元素,消费者则从队列里取元素。 队列Queue接口核心方法 阻塞队列,本质上来说还是属于队列,也就是说阻塞队列继承了队列的功能,这里我们先来看看Queue接口中的几个核心方法: 方法 功能 add(e) 添加一个元素,成功返回true,如果空间满了则抛出异常 offer(e) 添加一个元素,成功返回true,如果空间满了则返回false,处理有界队列时优于add方法 remove() 检索并移除队列头元素,成功则返回移除的元素