内部类 Node

1
2
3
4
5
6
7
private static class Node<E> {
// 存储队列中的元素
volatile E item;

// next 存储单向链表,指向下一个结点
volatile Node<E> next;
}

初始化

1
2
3
4
5
6
7
8
9
10
11
// 队列头结点
private transient volatile Node<E> head;

// 队列尾结点
private transient volatile Node<E> tail;

// 构造函数
public ConcurrentLinkedQueue() {
// 头尾均指向一个空的结点
head = tail = new Node<E>(null);
}

put过程

可以参考下面的链接。

参考

JDK1.8源码分析之ConcurrentLinkedQueue(五)

gcc Unsafe

openjdk Unsafe