13、ArrayBlocking

java.util.concurrent

Class ArrayBlockingQueue<E>

 

阻塞队列是通过数组来实现的。队列的元素顺序是FIFO。队列的头部元素是等待最长时间的,队列的尾部元素是在队列中时间最短的。新元素插在队列的尾部,队列的检索从队列的头部开始。

 

这是一个典型的有边界的缓存,在这个固定大小的数组中存储着生产者插入的元素,并且能够被消费者取出消费。这个容器的容量是固定的,

当容器已满时,还往容器中插入元素,就会引起操作阻塞;相反,如果试图从一个空队列中取走元素,也会引起操作阻塞。

 

这个类有一个boolean型的可选参数fairness,默认情况下为false,表明不保证线程的顺序;如果为true,就保证线程以先进先出的顺序访问队列。fairness减少了大并发,而且减少了不可变性和避免了线程饥饿。

 

posted on 2015-06-01 12:14  飞机说之代码也疯狂  阅读(152)  评论(0编辑  收藏  举报