基于数组的阻塞队列实现,在ArrayBlockingQueue内部,维护了一个定长数组,以便缓存队列中的数据对象,这是一个常用的阻塞队列,除了一个定长数组外, ArrayBlockingQueue内部还保存着两个整形变量,分别标识着队列的头部和尾部在数组中的位置。 public class ArrayBlockingQueue<E> extends AbstractQueue<E>
ArrayBlockingQueue 实际实现是一个环形数组,并且保护了线程安全,那么是如何保证线程安全的? 环形数组怎么实现的? 先看下里面的几个参数是干嘛的 /** The queued items */数据,存数据的 final Object[] items;/** items index for next take, poll, peek or remove */取出的引索i