Java的java.util.concurrent.*包下有许多在并发场景下使用的集合,ArrayBlockingQueue是其中之一,它是一个循环队列,这个队列的特别之处在于take方法与put方法,分别对应队列的元素出列和元素入列操作,当队列为空时,take会使得线程进入等待状态,直到队列不为空,有元素能够出列才会继续执行;同理,当队列满时,put方法也会使得线程进入等待状态。
实际上这是一个生产者-消费者模型,按照理解, 自己也试着实现了一个,代码如下
/** * Created by YotWei on 2018/7/1. */ public class BlockingQueue<E> { /** * 有界队列内部固定长度,因此可以用数组实现 */ private Object[] elements; /** * 队列的头和尾下标