ArrayBlockingQueue是Java Collections Framework成员之一。
ArrayBlockingQueue是一个有边界,底层是用数组实现的。这个队列的特性是先进先出(FIFO First in First out)。它可以在系统中作为一个有边界的缓存区来使用。在生产者与消费者模式中,它做Producer和Consumer之间沟通的固定Buffer存在。这个队列中的元素是生产者(Producers)插入,消费者从队列中拿出元素,进行数据分析,加工。一旦创建了这个队列,是不能改变它的大小的。这个队列有两种情况会发生堵塞:
1.当队列已满,这时生产者线程对队列进行插入操作的时候。
2.当队列已空,这时消费者线程对队列进行获取操作的时候。
这个队列对于生产者和消费者线程,在执行队列操作的时候,是相对公平的。这个队列在构建上,要根据系统本身的情况,进行综合考虑,比如说,队列的大小,消费者线程的大小,生产者有多少。这个世界是公平的,这种设计会对系统吞吐量有点影响,不过,它可以使系统更加稳定。