一)LinkedBlockingQueue<E>简介
LinkedBlockingQueue<E>源码详解(基于jdk1.8.0_162)
1)底层由单链表实现。
2)是一个FIFO(先进先出)的阻塞队列。
3)创建时,可指定队列初始容量,如未指定,默认为Integer.MAX_VALUE,指定后不能修改。是一个线程安全的队列。
类图:LinkedBlockingQueue<E>继承了AbstractQueue<E>类并实现了BlockingQueue<E>接口。
二)构造方法
1)LinkedBlockingQueue()
创建一个 LinkedBlockingQueue ,容量为 Integer.MAX_VALUE 。
2)LinkedBlockingQueue(int capacity)
创建一个具有给定(固定)容量的 LinkedBlockingQueue 。
public LinkedBlockingQueue() {
this(Integer.MAX_VALUE); // 默认Integer最大容量
}
public LinkedBlockingQueue(int capacity) {
if (capacity <= 0) throw new IllegalArgumentException();
this.capacity = capacity; // 初始化队列容量
last = head = new Node<E>(null); // 把队列头尾相连并初始化为null
}
三)添加
1)void put(E e)
在该队列的尾部插入指定的元素,如果需要,等待空格变为可用。
public void put