前言

  队列,字面意思就可以明白. 是一种线性的数据暂存与管理工具. 也可以让各种业务功能进行逐个的队列运行. 此篇博客只说明一下Java有几种队列

未阻塞和阻塞队列的区别

  未阻塞:

    1.未阻塞的队列在并发想队列添加或者取得数据的时候,必定只会有一个成功,其他都可能添加失败.

  阻塞:

    1.阻塞的队列会进行线程阻塞操作,让并发的添加或者取得数据进行一定程度的延迟,可以保证大量并发数据的添加. 但是阻塞也是有超时时间的.. 超过一段时间后依然会抛出异常或者抛出false

没有实现阻塞接口

LinkList

实现java.util.Queue的LinkList,

PriorityQueue

实现java.util.AbstractQueue接口内置的不阻塞队列

ConcurrentLinkedQueue

实现java.util.AbstractQueue接口内置的不阻塞队列

实现阻塞接口的

java.util.concurrent 中加入了 BlockingQueue 接口和五个阻塞队列类。它实质上就是一种带有一点扭曲的 FIFO 数据结构。不是立即从队列中添加或者删除元素,线程执行操作阻塞,直到有空间或者元素可用。
五个队列所提供的各有不同:  

ArrayBlockingQueue :

一个由数组支持的有界队列。

LinkedBlockingQueue :

一个由链接节点支持的可选有界队列。LinkedBlockingQueue的容量(在不指定时容量为Integer.MAX_VALUE),但是也可以选择指定其最大容量,它是基于链表的队列,此队列按 FIFO(先进先出)排序元素。

PriorityBlockingQueue :

一个由优先级堆支持的无界(没有容量限制)优先级队列。 是一个带优先级的 队列,而不是先进先出队列。元素按优先级顺序被移除.

DelayQueue :

一个由优先级堆支持的、基于时间的调度队列。(基于PriorityQueue来实现的)是一个存放Delayed 元素的无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的 Delayed 元素。如果延迟都还没有期满,则队列没有头部,并且poll将返回null。当一个元素的 getDelay(TimeUnit.NANOSECONDS) 方法返回一个小于或等于零的值时,则出现期满,poll就以移除这个元素了。此队列不允许使用 null 元素。

SynchronousQueue :

一个利用 BlockingQueue 接口的简单聚集(rendezvous)机制。

最新文章

  1. Windows Store App JavaScript 开发:小球运动示例
  2. 应用jacob组件造成的内存溢出解决方案(java.lang.OutOfMemoryError: Java heap space)
  3. 如何定位web前后台的BUG
  4. [原创]java WEB学习笔记62:Struts2学习之路--表单标签:form,表单标签的属性,textfield, password, hidden,submit ,textarea ,checkbox ,list, listKey 和 listValue 属性,select ,optiongroup ,checkboxlist
  5. readline函数分析
  6. union以及一些扩展
  7. Windows10 64位系统安装 .NET Framework 3.5
  8. LFYZ-OJ ID: 1016 输油管道问题
  9. Activity的介绍
  10. PhpStorm 中切换PHP版本
  11. python os.path.dirname()
  12. 【Dalston】【第四章】容错保护(Hystrix)
  13. ARP欺骗与MITM(中间人攻击)实例
  14. 如何区分USB 2.0 和USB 3.0插口
  15. VS2010 单元测试,性能测试 案例
  16. BZOJ4950 Wf2017Mission Improbable(二分图匹配)
  17. 复习及总结--.Net线程篇(3)
  18. 在eclipse中,Python项目遇到:…… from appium import webdriver ImportError: No module named appium
  19. MySQL使用FEDERATED engine建立代理表
  20. URAL 1145—— Rope in the Labyrinth——————【求树的直径】

热门文章

  1. js关于if()else{}中的判定条件的认识,各种数据类型转换为Boolean类型的转换规则
  2. leetcode.数组.287寻找重复数-Java
  3. selenium 滑动页面至元素可见
  4. 2019ICPC南昌网络赛C Hello 2019
  5. P3410 /// 最大流最小割
  6. 2019-9-25-如何让-USB-设备不显示安全删除硬件弹出选项
  7. Storm框架设计
  8. shell command to replace UltraEdit
  9. wkhtmltopdf linux下html转pdf
  10. PCA分析,及c++代码实现