首页 > 编程语言 > 详细

Java容器--Queue

时间:2019-07-07 09:38:31      阅读:115      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

ConcurrentLinkedQueue

参考

https://www.cnblogs.com/leesf456/p/5539142.html

 

ConcurerntLinkedQueue一个基于链接节点的无界线程安全队列。

此队列按照 FIFO(先进先出)原则对元素进行排序。队列的头部是队列中时间最长的元素,队列的尾部 是队列中时间最短的元素。

新的元素插入到队列的尾部,队列获取操作从队列头部获得元素。

当多个线程共享访问一个公共 collection 时,ConcurrentLinkedQueue是一个恰当的选择。

此队列不允许使用null元素。

 

 主要成员变量

辅助指向队列头部和尾部,因为其并不是严格的指向队列的开始和末尾。

技术分享图片

技术分享图片

CAS所需的UNSAFE对象和head,tail对应的offset(执行CAS时需要的head和tail的字段偏移

初步认识UNSAFE: https://huangyunbin.iteye.com/blog/1942369

技术分享图片

 

数据载体

ConcurrentLinkedQueue的结点是用定义在其内部的Node类来表示的。

基本的与一般的链表定义相当,表示数据的item和指向下一个结点的next。

技术分享图片

 

构造方法

默认构造方法

技术分享图片

创建一个空结点,head和tail都指向这个空结点。

 

插入结点 add / offer

add方法直接调用offer方法

技术分享图片

技术分享图片

 

Java容器--Queue

原文:https://www.cnblogs.com/microcat/p/11144848.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!