Java:ArrayBlockingQueue

Posted bdmh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java:ArrayBlockingQueue相关的知识,希望对你有一定的参考价值。

ArrayBlockingQueue是一个有界队列,执行先进先出(FIFO)原则,它是固定大小的,一旦创建,容量就不能被修改。先对部分属性和方法进行简单说明。

属性

items 内部保存对象的数组,这个数组创建后,大小就不会改变了,即使添加和取出元素,都不会影响数组大小,只不过对应位置会被改写
takeIndex 下一个被检索的元素的索引,初始为0,每取出一个元素,+1
putIndex 下一个被添加的元素的索引,初始为0,每添加一个元素,+1
count 队列的数量,不是items的size,取出就-1,添加就+1
lock ReentrantLock锁,贯穿整个队列的操作,保证线程安全
itrs 内部维护一个链表,是元素与其宿主queue共享数据的通道

方法

itemAt(int i) 取出指定位置的item
itemAt(Object[] items, int i) 取出参数items指定位置

以上是关于Java:ArrayBlockingQueue的主要内容,如果未能解决你的问题,请参考以下文章

java多线程ArrayBlockingQueue阻塞队列

java集合Queue集合之ArrayBlockingQueue 详解

Java源码解析——集合框架——ArrayBlockingQueue

源码阅读(32):Java中线程安全的QueueDeque结构——ArrayBlockingQueue

源码阅读(32):Java中线程安全的QueueDeque结构——ArrayBlockingQueue

JAVA多线程之ArrayBlockingQueue看Condition的实现