一、简介
JDK通过BlockQueue阻塞队列实现了生产者-消费者模式,生产者向队列添加数据,消费者从队列里面消费数据。
但是在有些场景里面,我们是无法区分生产者消费者的,或者说既是生产者,也是消费者。JDK针对这种情况,实现了双端队列。
JDK文档:http://tool.oschina.net/uploads/apidocs/jdk-zh/java/util/concurrent/LinkedBlockingDeque.html
二、代码示例
import java.util.concurrent.LinkedBlockingDeque; public class BlockDequeDemo { private static LinkedBlockingDeque<String> deque = new LinkedBlockingDeque<>(); public static void main(String[] args) { deque.offerFirst("lay_first"); deque.offerFirst("marry_first"); deque.offerLast("lay_last"); deque.offerLast("marry_last"); System.out.println("队列结构:" + deque.toString()); System.out.println("从头取:" + deque.pollFirst()); System.out.println("从尾部取:" + deque.pollLast()); System.out.println("队列结构:" + deque.toString()); } }
打印结果
队列结构:[marry_first, lay_first, lay_last, marry_last]
从头取:marry_first
从尾部取:marry_last
队列结构:[lay_first, lay_last]