ArrayBlockingQueue
是由数组实现的有界阻塞队列,数据遵循FIFO先进先出的顺序,一旦创建容量固定无法修改。尝试put
一个元素到满队列则阻塞等待,尝试take
一个元素到满队列亦阻塞等待。支持可选的公平策略控制等待的生产者和消费者获取数据的顺序,默认顺序是无法保证的。public ArrayBlockingQueue(int capacity, boolean fair)
通过构造函数将fair
设置为true能保证线程访问的顺序按照FIFO,这种模式下会降低吞吐量但也能减少可变性、避免饥饿。
1 | public class ArrayBlockingQueue<E> extends AbstractQueue<E> |