一、简介
二、分析
2.1 类结构
2.1.0 类结构图
2.2 内部类
2.2.0 内部类列表图
2.2.1 Itr
2.2.2 LBQSpliterator
2.2.3 Node
2.3 字段
2.3.0 字段列表图
2.3.1 capacity
-
/** * 队列的容量 */ private final int capacity;
2.3.2 count
-
/** * 队列元素的个数 原子变量 */ private final AtomicInteger count = new AtomicInteger();
2.3.3 head
/**
* 链表的头结点
*/
transient Node<E> head;
2.2.4 last
/**
* 链表的尾结点
*/
private transient Node<E> last;
2.2.5 takeLock
/**
* 队列头部取元素的独占锁,调用take方法、poll方法需要获取该锁
*/
private final ReentrantLock takeLock = new ReentrantLock();
2.2.6 notEmpty
/**
* 队列头取元素的条件,内部维护了一个条件队列, 搭配notFull使用了生产者消费者设计模式
*/
private final Condition notEmpty = takeLock.newCondition();
2.2.7 putLock
/**
* 队列头部存元素的独占锁,调用put方法、offer方法需要获取该锁
*/
private final ReentrantLock putLock = new ReentrantLock();
2.2.8 notFull
/**
* 队列头存元素的条件,内部维护了一个条件队列, 搭配notEmpty使用了生产者消费者设计模式
*/
private final Condition notFull = putLock.newCondition();
2.4 代码块
2.4.1 静态代码块
- 无
2.5 方法
2.5.0 方法列表图
2.5.1 构造函数