LinkedBlockingDeque

/**
 * LinkedBlockingDeque 有链表组成的可选容量的双端阻塞队列
 * 他比LinkedBlockingQueue的优点是可以两端向队列中添加元素
 */

/**
 *  考虑下面这样一种场景:有多个消费者,每个消费者有自己的一个消息队列,
 *  生产者不断的生产数据扔到队列中,消费者消费数据有快又慢。为了提升效率,
 *  速度快的消费者可以从其它消费者队列的队尾出队元素放到自己的消息队列中,
 *  由于是从其它队列的队尾出队,这样可以减少并发冲突(其它消费者从队首出队元素),
 *  又能提升整个系统的吞吐量。这其实是一种“工作窃取算法”的思路。
 */
public class LinkedBlockingDequeTest {

    private static LinkedBlockingDeque<String> queue = new LinkedBlockingDeque<String>();

    public static void main(String[] args) {

        queue.addFirst("hello");

        queue.addLast("java");

        System.out.println(queue.removeFirst());
        System.out.println(queue.removeFirst());
    }
}
posted @ 2019-12-18 14:29  踏月而来  阅读(286)  评论(0编辑  收藏  举报