美文网首页
BlockingDeque

BlockingDeque

作者: uriah | 来源:发表于2016-10-16 10:07 被阅读0次

    BlockingDeque 是java.util.concurrent包中提供的一个接口。该接口表示一个双端队列。该双端队列,线程可以安全的插入,和取出元素。线程插入或者移出队列中的元素时,可能会阻塞。

    BlockingDeque用法

    如果一个线程既要向队列中添加元素,又要从同一个队列中取元素,那么BlockingDeque将是非常有用的。如果消费者线程既要从队列的头部取元素,也要从队列的尾部取元素;或者生产者线程需要插入元素到队列的两端,那么BlockingDeque也是非常有用的。

    BlockingDeque:线程可以从两端插入,取出元素

       一个线程可以插入元素到队列的任一端。如果队列full,那么线程将会阻塞,直到其他线程从队列中取出一个元素为止。如果队列empty,那么从队列中取元素的线程将会阻塞,直到其他线程插入一个元素为止。

    BlockingDeque 方法

    BlockingDeque有4类方法,可以插入,删除,执行队列中的元素。

    这4类方法有不同的行为

    1,Throws Exception

    如果操作不能立即被执行,那么将抛出异常

    2.Special Value

    如果操作不能被立即执行,那么将返回一个异常值(一般情况下是true/false)

    3.Blocks

    如果操作不能被立即执行,那么操作将会阻塞,直至可以执行。

    4Times Out

    如果操作不能被立即执行,那么操作将会阻塞,直至可以执行,或者超时时间到。函数的返回值说明了操作是否执行成功。

    BlockingDeque继承于BlockingQueue

     BlockDeque接口继承自BlcokingQueue。这意味着你可以使用BlockingDeque作为一个BlockingQueue。如果你使用BlockingDeque作为BlockingQueue,那么BlockingQueue的插入操作就是把元素插入到BlockDeque的尾部。移出操作将是移出BlockDeque头部的元素 BlockingDeque实现 

    因为BlockingDeque是一个接口,你必须使用它的很多实现类中的一个。java.util.concurrent包有LinkedBlockingDeque实现类

     BlockingDeque代码示例 

    BlockingDequedeque = new LinkedBlockingDeque();

    deque.addFirst("1");

    deque.addLast("2");

    String two = deque.takeLast();

    String one = deque.takeFirst();

    相关文章

      网友评论

          本文标题:BlockingDeque

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