|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.util.concurrent
类 LinkedBlockingQueue<E>
java.lang.Object java.util.AbstractCollection<E> java.util.AbstractQueue<E> java.util.concurrent.LinkedBlockingQueue<E>
- 类型参数:
-
E
- 集合中所保存元素的类型。
- 所有已实现的接口:
- Serializable, Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>
-
public class LinkedBlockingQueue<E>
- extends AbstractQueue<E>
- implements BlockingQueue<E>, Serializable
一个基于已链接节点的、范围任意的 blocking queue。此队列按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。新元素插入到队列的尾部,并且队列检索操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。
可选的容量范围构造方法参数作为防止队列过度扩展的一种方法。如果未指定容量,则它等于 Integer.MAX_VALUE
。除非插入节点会使队列超出容量,否则每次插入后会动态地创建链接节点。
此类及其迭代器实现 Collection
和 Iterator
接口的所有可选 方法。
此类是 Java Collections Framework 的成员。
- 从以下版本开始:
- 1.5
- 另请参见:
- 序列化表格
构造方法摘要 | |
---|---|
LinkedBlockingQueue() 创建一个容量为 Integer.MAX_VALUE 的 LinkedBlockingQueue。 |
|
LinkedBlockingQueue(Collection<? extends E> c) 创建一个容量是 Integer.MAX_VALUE 的 LinkedBlockingQueue,最初包含给定集合的元素,元素按该集合迭代器的遍历顺序添加。 |
|
LinkedBlockingQueue(int capacity) 创建一个具有给定(固定)容量的 LinkedBlockingQueue。 |
方法摘要 | ||
---|---|---|
void |
clear() 从队列彻底移除所有元素。 |
|
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 继承的方法 |
---|
contains, 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, contains, containsAll, equals, hashCode, isEmpty, removeAll, retainAll |
构造方法详细信息 |
---|
LinkedBlockingQueue
public LinkedBlockingQueue()
-
创建一个容量为
Integer.MAX_VALUE
的 LinkedBlockingQueue。
LinkedBlockingQueue
public LinkedBlockingQueue(int capacity)
-
创建一个具有给定(固定)容量的 LinkedBlockingQueue。
- 参数:
-
capacity
- 队列的容量。 - 抛出:
-
IllegalArgumentException
- 如果 capacity 未大于 0。
LinkedBlockingQueue
public LinkedBlockingQueue(Collection<? extends E> c)
-
创建一个容量是
Integer.MAX_VALUE
的 LinkedBlockingQueue,最初包含给定集合的元素,元素按该集合迭代器的遍历顺序添加。- 参数:
-
c
- 最初所包含元素所属的集合。 - 抛出:
-
NullPointerException
- 如果 c 或其中的任意元素为 null。
方法详细信息 |
---|
size
public int size()
- 返回队列中的元素个数。
-
- 指定者:
-
接口
Collection<E>
中的size
- 指定者:
-
类
AbstractCollection<E>
中的size
-
- 返回:
- 队列中的元素个数。
remainingCapacity
public int remainingCapacity()
-
返回理想情况下(没有内存和资源约束)此队列可接受并且不会被阻塞的元素数量。该数量总是等于此队列的初始容量,小于队列的当前 size。
注意,不能 总是通过检查 remainingCapacity 来断定试图 add 一个元素是否成功,因为可能是等待的使用者已经准备好从一个已满的队列 take 某个元素。
-
- 指定者:
-
接口
BlockingQueue<E>
中的remainingCapacity
-
- 返回:
- 剩余容量
put
public void put(E o) throws InterruptedException
- 将指定的元素添加到队列的尾部,如有必要,则等待空间变得可用。
-
- 指定者:
-
接口
BlockingQueue<E>
中的put
-
- 参数:
-
o
- 要添加的元素。 - 抛出:
-
InterruptedException
- 如果在等待时中断。 -
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。
offer
public boolean offer(E o)
- 如果可能,在队列尾部插入指定的元素,如果队列已满则立即返回。
-
- 参数:
-
o
- 要添加的元素。 - 返回:
- 如果可以向此队列添加元素,则返回 true;否则返回 false。
- 抛出:
-
NullPointerException
- 如果指定的元素为 null。