突击并发编程JUC系列-阻塞队列 BlockingQueue( 三 )

LinkedBlockingDequeLinkedBlockingDeque 是一个由链表结构组成的双向阻塞队列 。 所谓双向队列指的是可以从队列的两端插入和移出元素 。 双向队列因为多了一个操作队列的入口 , 在多线程同时入队时 , 也就减少了一半的竞争 。 相比其他的阻塞队列 ,LinkedBlockingDeque 多了 addFirst 、 addLast 、 offerFirst 、 offerLast 、 peekFirst 和 peekLast 等方法 , 以 First 单词结尾的方法 , 表示插入、获取(peek)或移除双端队列的第一个元素 。 以 Last 单词结尾的方法 , 表示插入、获取或移除双端队列的最后一个元素 。 另外 , 插入方法 add 等同于 addLast, 移除方法 remove 等效于 removeFirst。 但是 take 方法却等同于 takeFirst, 不知道是不是 JDK 的 bug , 使用时还是用带有 First 和 Last 后缀的方法更清楚 。
在初始化 LinkedBlockingDeque 时可以设置容量防止其过度膨胀 。 另外 , 双向阻塞队列可以运用在“工作窃取”模式中 。
突击并发编程JUC系列演示代码地址:
作者:故人
【突击并发编程JUC系列-阻塞队列 BlockingQueue】出处: