java arrayblockingqueue 什么时候用
发布网友
发布时间:2022-04-09 19:00
我来回答
共1个回答
热心网友
时间:2022-04-09 20:30
ArrayBlockingQueue
是一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列获取操作则是从队列头部开始获得元素。
public class ArrayBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, java.io.Serializable {
/** 队列元素 数组 */
private final E[] items;
/** 获取、删除元素时的索引(take, poll 或 remove操作) */
private int takeIndex;
/** 添加元素时的索引(put, offer或 add操作) */
private int putIndex;
/** 队列元素的数目*/
private int count;
/** 锁 */
private final ReentrantLock lock;
/** 获取操作时的条件 */
private final Condition notEmpty;
/** 插入操作时的条件 */
private final Condition notFull;
//超出数组长度时,重设为0
final int inc(int i) {
return (++i == items.length)? 0 : i;
}