LinkedBlockingDeque作为一种阻塞双端队列,提供了队尾删除元素和队首插入元素的阻塞方法。该类在构造时一般需要指定容量,如果不指定,则最大容量为Integer.MAX_VALUE。另外,由于内部通过ReentrantLock来保证线程安全,所以LinkedBlockingDeque的整体实现时比较简单的。

另外,双端队列相比普通队列,主要是多了【队尾出队元素】/【队首入队元素】的功能。
阻塞队列我们知道一般用于“生产者-消费者”模式,而双端阻塞队列在“生产者-消费者”就可以利用“双端”的特性,从队尾出队元素。

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

LinkedBlockingDeque 详解博客

https://www.cnblogs.com/skywang12345/p/3503480.html

https://segmentfault.com/a/1190000016398508

List 系列

  • ArrayList
  • LinkedList
  • CopyOnWriteArrayList

Queue系列

  • ArrayDeque
  • ConcurrentLinkedDeque
  • LinkedBlockingDeque

https://zhuanlan.zhihu.com/p/261400643

List 系列 ArrayList LinkedList CopyOnWriteArrayList Queue系列 ArrayDeque ConcurrentLinkedDeque LinkedBlo相关推荐

  1. Java之List系列--ArrayList保证线程安全的方法

    原文网址:Java之List系列--ArrayList保证线程安全的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java中的ArrayList.LinkedList如何进行线程安全的操作.为 ...

  2. Java集合Collection源码系列-ArrayList源码分析

    Java集合系列-ArrayList源码分析 文章目录 Java集合系列-ArrayList源码分析 前言 一.为什么想去分析ArrayList源码? 二.源码分析 1.宏观上分析List 2.方法汇 ...

  3. Java之List系列--ArrayList扩容的原理

    原文网址:Java之List系列--ArrayList扩容的原理_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Java的ArrayList是如何进行扩容的.即:扩容的机制. 重要大小 类 初 ...

  4. 《吊打面试官》系列-ArrayList

    本文转载自帅丙(三太子敖丙)的博客下的<吊打面试官>系列-ArrayList 前言 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数竞争对手,每次都只能看到无数落寞的身影失望的 ...

  5. Java基础汇总(十四)——LinkedList,Queue

    一.LinkedList 1.定义 LinkedList:List接口链表的实现 LinkedList是双向链表 基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList Li ...

  6. ArrayList, LinkedList, Vector - dudu:史上最详解

    ArrayList, LinkedList, Vector - dudu:史上最详解 我们来比较一下ArrayList, LinkedLIst和Vector它们之间的区别.BZ的JDK版本是1.7.0 ...

  7. Vector ArrayList Hashtable HashMap ArrayList LinkedList

    1. Vector & ArrayList 1)  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的 ...

  8. java vector arraylist linkedlist用法与区别

    首先,它们是list的实现类,大致说一下vector arraylist linkedlist的区别. 1.线程安全来讲, vector是线程安全,arraylist linkedlist线程不安全. ...

  9. ArrayList,LinkedList,Vector的异同点

    先总结下ArrayList和LinkedList的区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. 2.对于随机访问get和set,ArrayLi ...

最新文章

  1. C#文字转语音,实时播放以及mp3,wav文件保存
  2. 设计模式心得笔记--简单工厂
  3. 计算机科学英文杂志,Journal of Computer Science Technology
  4. Derby数据库备份
  5. 软件测试ipad电池,ipad2020电池有问题是真的吗
  6. 【转载】早点长大的飞秋
  7. android 距离设置多少dp核实,【Android学习】android布局中几个距离单位的区别:px、dp、sp...
  8. 请详细描述LVS DR模式的原理
  9. Visio2013安装教程
  10. 可行性研究报告——机房收费系统
  11. 碳排放计算-20210515
  12. java gwt开发_GWT项目和开发总结
  13. 什么是TPS,什么是QPS
  14. Abraham Robinson and Nonstandard Analysis: History, Philosophy, and Foundations of Mathematics
  15. [开心IT面试题] 关于50个人50条狗有几条病狗的推算
  16. 2017 Multi-University Training Contest - Team 8:Fleet of the Eternal Throne(AC自动机)
  17. 耳朵上的艺术品,飞利浦圈铁真无线耳机JT60无敌了!
  18. 异步电动机的机械特性(转速/转矩-电流特性)
  19. 中国大陆互联网国际出口情况(2015年)
  20. Fabric 1.0源代码分析(32)Peer #peer根命令入口及加载子命令

热门文章

  1. 快速排序java代码_8 种排序算法与 Java 代码实现!
  2. Jmeter Loadrunner高级性能测试真实曝光
  3. android checkbox状态不刷新,android开发分享更改checkbox的值,而不触发onCheckChanged
  4. python json数据格式数组内元素递增赋值_python深浅复制,类型转换, json操作,数组操作...
  5. spark读取hdfs路径下的数据_Spark读取HDFS数据分区参考
  6. wps插件实用插件_6款实用PS插件合集,好用的PS插件都在这里!
  7. java下列语句正确的是_下列Java语句中,不正确的一项是( )。
  8. 西南民族大学计算机基础技能应用培训基地,计科学院第九期Office应用培训开班典礼顺利举办...
  9. java domain层_java框架中的controller层、dao层、domain层、service层、view层
  10. 7-6 混合类型数据格式化输入 (C语言)