Java容器--Queue

 

 

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方法

 

posted @ 2019-07-07 00:30  MicroCat  阅读(352)  评论(0编辑  收藏  举报