Java容器--Queue

ConcurrentLinkedQueue

参考

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

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

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

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

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

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

扫描二维码关注公众号,回复: 6775193 查看本文章

 主要成员变量

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

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

猜你喜欢

转载自www.cnblogs.com/microcat/p/11144848.html
今日推荐