|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.util.concurrent
类 ArrayBlockingQueue<E>
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractQueue<E> java.util.concurrent.ArrayBlockingQueue<E>
- 类型参数:
-
E
- 在此 collection 中保持的元素类型
- 所有已实现的接口:
- Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
-
public class ArrayBlockingQueue<E>
- extends AbstractQueue<E>
- implements BlockingQueue<E>, Serializable
一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列检索操作则是从队列头部开始获得元素。
这是一个典型的“有界缓存区”,固定大小的数组在其中保持生产者插入的元素和使用者提取的元素。一旦创建了这样的缓存区,就不能再增加其容量。试图向已满队列中放入元素会导致放入操作受阻塞;试图从空队列中检索元素将导致类似阻塞。
此类支持对等待的生产者线程和使用者线程进行排序的可选公平策略。默认情况下,不保证是这种排序。然而,通过将公平性 (fairness) 设置为 true 而构造的队列允许按照 FIFO 顺序访问线程。公平性通常会降低吞吐量,但也减少了可变性和避免了“不平衡性”。
此类及其迭代器实现了 Collection
和 Iterator
接口的所有可选 方法。
此类是 Java Collections Framework 的成员。
- 从以下版本开始:
- 1.5
- 另请参见:
- 序列化表格
构造方法摘要 | |
---|---|
ArrayBlockingQueue(int capacity) 创建一个带有给定的(固定)容量和默认访问策略的 ArrayBlockingQueue。 |
|
ArrayBlockingQueue(int capacity, boolean fair) 创建一个具有给定的(固定)容量和指定访问策略的 ArrayBlockingQueue。 |
|
ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c) 创建一个具有给定的(固定)容量和指定访问策略的 ArrayBlockingQueue,它最初包含给定 collection 的元素,并以 collection 迭代器的遍历顺序添加元素。 |
方法摘要 | ||
---|---|---|
void |
clear() 自动移除此队列中的所有元素。 |
|
boolean |
contains(Object o) 如果此 collection 包含指定的元素,则返回 true。 |
|
int |
drainTo(Collection<? super E> c) 移除此队列中所有可用的元素,并将它们添加到给定 collection 中。 |
|
int |
drainTo(Collection<? super E> c, int maxElements) 最多从此队列中移除给定数量的可用元素,并将这些元素添加到给定 collection 中。 |
|
Iterator<E> |
iterator() 返回在此队列中的元素上以正确顺序进行迭代的迭代器。 |
|
boolean |
offer(E o) 将指定的元素插入到此队列的尾部(如果可能),如果此队列已满,则立即返回。 |
|
boolean |
offer(E o, long timeout, TimeUnit unit) 将指定的元素插入到此队列的尾部,如果没有可用空间,将等待指定的等待时间(如果有必要)。 |
|
E |
peek() 检索,但是不移除此队列的头,如果此队列为空,则返回 null。 |
|
E |
poll() 检索并移除此队列的头,如果此队列为空,则返回 null。 |
|
E |
poll(long timeout, TimeUnit unit) 检索并移除此队列的头部,如果此队列中没有任何元素,则等待指定等待的时间(如果有必要)。 |
|
void |
put(E o) 将指定的元素添加到此队列的尾部,如果必要,将等待可用的空间。 |
|
int |
remainingCapacity() 返回在无阻塞的理想情况下(不存在内存或资源约束)此队列能接受的元素数量。 |
|
boolean |
remove(Object o) 从此队列中移除指定元素的一个实例(如果存在)。 |
|
int |
size() 返回此队列中元素的数量。 |
|
E |
take() 检索并移除此队列的头部,如果此队列不存在任何元素,则一直等待。 |
|
Object[] |
toArray() 返回包含此 collection 中所有元素的数组。 |
|
|
toArray(T[] a) 返回包含此 collection 中所有元素的数组;返回数组的运行时类型是指定数组的类型。 |
|
String |
toString() 返回此 collection 的字符串表示形式。 |
从类 java.util.AbstractQueue 继承的方法 |
---|
add, addAll, element, remove |
从类 java.util.AbstractCollection 继承的方法 |
---|
containsAll, isEmpty, removeAll, retainAll |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
从接口 java.util.concurrent.BlockingQueue 继承的方法 |
---|
add |
从接口 java.util.Queue 继承的方法 |
---|
element, remove |
从接口 java.util.Collection 继承的方法 |
---|
addAll, containsAll, equals, hashCode, isEmpty, removeAll, retainAll |
构造方法详细信息 |
---|
ArrayBlockingQueue
public ArrayBlockingQueue(int capacity)
-
创建一个带有给定的(固定)容量和默认访问策略的 ArrayBlockingQueue。
- 参数:
-
capacity
- 此队列的容量 - 抛出:
-
IllegalArgumentException
- 如果 capacity 小于 1
ArrayBlockingQueue
public ArrayBlockingQueue(int capacity, boolean fair)
-
创建一个具有给定的(固定)容量和指定访问策略的 ArrayBlockingQueue。
- 参数:
-
capacity
- 此队列的容量 -
fair
- 如果为 true,则按照 FIFO 顺序访问插入或移除时受阻塞线程的队列;如果为 false,则访问顺序是不确定的。 - 抛出:
-
IllegalArgumentException
- 如果 capacity 小于 1
ArrayBlockingQueue
public ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c)
-
创建一个具有给定的(固定)容量和指定访问策略的 ArrayBlockingQueue,它最初包含给定 collection 的元素,并以 collection 迭代器的遍历顺序添加元素。
- 参数:
-
capacity
- 此队列的容量 -
fair
- 如果为 true,则按照 FIFO 顺序访问插入或移除时受阻塞线程的队列;如果为 false,则访问顺序是不确定的。 -
c
- 最初要包含的元素的 collection - 抛出:
-
IllegalArgumentException
- 如果 capacity 小于 c.size(),或者小于 1 -
NullPointerException
- 如果 c 或其中任何元素为 null
方法详细信息 |
---|
offer
public boolean offer(E o)
- 将指定的元素插入到此队列的尾部(如果可能),如果此队列已满,则立即返回。
-
- 参数:
-
o
- 要添加的元素。 - 返回:
- 如果可以将元素添加到此队列中,则返回 true,其他情况则返回 false
- 抛出:
-
NullPointerException
- 如果指定的元素为 null
offer
public boolean offer(E o, long timeout, TimeUnit unit) throws InterruptedException
- 将指定的元素插入到此队列的尾部,如果没有可用空间,将等待指定的等待时间(如果有必要)。
-
- 指定者:
-
接口
BlockingQueue<E>
中的offer
-
- 参数:
-
o
- 要添加的元素 -
timeout
- 放弃之前等待的时间长度,以 unit 为时间单位 -
unit
- 确定如何解释 timeout 参数的 TimeUnit - 返回:
- 如果成功,则返回 true;如果在空间可用前超过了指定的等待时间,则返回 false。
- 抛出:
-
InterruptedException
- 如果在等待时被中断。 -
NullPointerException
- 如果指定的元素为 null。
poll
public E poll()
poll
public E poll(long timeout, TimeUnit unit) throws InterruptedException
-
从接口
BlockingQueue
复制的描述 - 检索并移除此队列的头部,如果此队列中没有任何元素,则等待指定等待的时间(如果有必要)。
-
- 指定者:
-
接口
BlockingQueue<E>
中的poll
-
- 参数:
-
timeout
- 放弃之前等待的时间长度,以 unit 为时间单位 -
unit
- 确定如何解释 timeout 参数的 TimeUnit - 返回:
- 此队列的头部;如果在元素出现前超过了指定的等待时间,则返回 null。
- 抛出:
-
InterruptedException
- 如果在等待时被中断。
remove
public boolean remove(Object o)
- 从此队列中移除指定元素的一个实例(如果存在)。
-
- 指定者:
-
接口
Collection<E>
中的remove
- 覆盖:
-
类
AbstractCollection<E>
中的remove
-
- 参数:
-
o
- 要从此 collection 中移除的元素(如果存在)。 - 返回:
- 如果该 collection 包含指定的元素,则返回 true。