美文网首页
BlockingDeque 双端队列

BlockingDeque 双端队列

作者: BeStronger30 | 来源:发表于2018-02-27 17:35 被阅读0次

BlockingDeque 是java.util.concurrent包中的一个双端队列,向其中加入元素或从中取出元素都是线程安全的,如果不完全不能对BlockingDequeue插入或者取出元素,那么将会阻塞线程,deque 是 “Double Ended Queue”的简称。因此一个deque可以从两端插入和取出元素的。

BlockingDeque使用说明

如果线程同时生成和使用同一队列的元素,则可以使用BlockingDeque。 如果生产线程需要在队列的两端插入,并且消费线程需要从队列的两端删除,那么也可以使用它。 这是一个例子:


双端队列.png

线程将产生元素并将其插入到队列的任一端。 如果双端队列当前已满,则插入线程将被阻塞,直到删除线程将一个元素从双端队列中取出。 如果deque当前为空,则删除线程将被阻塞,直到插入线程将一个元素插入到deque中。
BlockingDeque有4种不同的方法用于插入删除和检查双端队列中的元素。 在所请求的操作不能立即执行的情况下,每组方法的行为都不相同。 这里是一个表格的方法:


双端对列的方法.png
  1. Throws exception :调用此类方法时,如果不能够立即得到执行则或抛出异常
  2. Special Value :调用此类方法,如果不能够立即执行,会返回一个特殊的值,通常是 true/false
  3. Blocks 调用此类方法,如果不能够立即执行,则会一直阻塞到可以执行为止
  4. Time out 调用此类方法不能够立即执行,则方法会一直阻塞,直到超过给定的超时值。返回一个特殊值,告诉操作是否成功(通常为true / false)

BlockingDeque Extends BlockingQueue

BlockingDeque接口扩展了BlockingQueue接口。 这意味着你可以使用BlockingDeque作为BlockingQueue。 如果这样做,各种插入方法会将元素添加到双端队列的末尾,并且除去方法将从双端队列的开始处移除元素。BlockingQueue接口的插入和删除方法,下面的是BlockingQueue中的方法在BlockingDeque的中对应的实现


BlockingDeque.png

BlockingDeque 的实现类

简单的使用示例

BlockingDeque<String> deque = new LinkedBlockingDeque<String>();
deque.addFirst("1");
deque.addLast("2");
String two = deque.takeLast();
String one = deque.takeFirst();

参考文章:http://tutorials.jenkov.com/java-util-concurrent/blockingdeque.html

相关文章

  • BlockingDeque 双端队列

    BlockingDeque 是java.util.concurrent包中的一个双端队列,向其中加入元素或从中取出...

  • BlockingDeque

    BlockingDeque 是java.util.concurrent包中提供的一个接口。该接口表示一个双端队列。...

  • 11.BlockingDeque

    BlockingDeque定义了一个阻塞的双端队列接口。 该接口继承了BlockingQueue接口,同时增加了对...

  • 【java】并发-阻塞双端队列 BlockingDeque

    java.util.concurrent 包里的 BlockingDeque 接口表示一个线程安放入和提取实例的双...

  • 7.双端队列Deque

    目录:1.双端队列的定义2.双端队列的图解3.双端队列定义操作4.双端队列的实现 1.双端队列的定义 2.双端队列...

  • 双端队列

    双端队列 双端队列是与队列类似的项的有序集合。双端队列有两个端部,首部和尾部,并且项在集合中保持不变。双端队不同的...

  • 数据结构-队列(Queue)-FIFO

    数据结构-队列(Queue)-FIFO 队列的接口设计 双端队列-Deque 循环队列-CircleQueue 双...

  • 数据结构与算法之队列(五)

    目录 队列简介队列的接口设计用栈实现队列双端队列实现循环队列实现循环双端队列 一 简介 队列是一种特殊的线性表,只...

  • 队列 - 双端队列 - 循环队列 - 循环双端队列

    队列是一种特殊的线性表,只能在头尾两端进行操作队尾(rear):只能从队尾添加元素,一般叫做 enQueue,入队...

  • 数据结构之「双端队列」

    什么是双端队列? 双端队列(deque)是指允许两端都可以进行入队和出队操作的队列,deque 是 “double...

网友评论

      本文标题:BlockingDeque 双端队列

      本文链接:https://www.haomeiwen.com/subject/mfumxftx.html