JavaTM 2 Platform
Standard Ed. 5.0

java.util.concurrent
类 DelayQueue<E extends Delayed>

java.lang.Object
  继承者 java.util.AbstractCollection<E>
      继承者 java.util.AbstractQueue<E>
          继承者 java.util.concurrent.DelayQueue<E>
类型参数:
E - 在此 collection 中保持的元素类型
所有已实现的接口:
Iterable<E>, Collection<E>, BlockingQueue<E>, Queue<E>

public class DelayQueue<E extends Delayed>
extends AbstractQueue<E>
implements BlockingQueue<E>

Delayed 元素的一个无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部 是延迟期满后保存时间最长的 Delayed 元素。如果延迟都还没有期满,则队列没有头部,并且 poll 将返回 null。当一个元素的 getDelay(TimeUnit.NANOSECONDS) 方法返回一个小于或等于零的值时,则出现期满。此队列不允许使用 null 元素。

此类及其迭代器实现了 CollectionIterator 接口的所有可选 方法。

此类是 Java Collections Framework 的成员。

从以下版本开始:
1.5

构造方法摘要
DelayQueue()
          创建一个最初为空的新 DelayQueue
DelayQueue(Collection<? extends E> c)
          创建一个最初包含 Delayed 实例的给定 collection 中的元素的 DelayQueue
 
方法摘要
 boolean add(E o)
          将指定元素添加到此队列中。
 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()
          因为 DelayQueue 没有容量限制,所以它总是返回 Integer.MAX_VALUE
 boolean remove(Object o)
          从此队列中移除指定元素的单个实例(如果存在)。
 int size()
          返回此 collection 中的元素数。
 E take()
          检索并移除此队列的头部,如果此队列不存在未到期延迟的元素,则等待它。
 Object[] toArray()
          返回包含此 collection 中所有元素的数组。
<T> T[]
toArray(T[] array)
          返回包含此 collection 中所有元素的数组;返回数组的运行时类型是指定数组的类型。
 
从类 java.util.AbstractQueue 继承的方法
addAll, element, remove
 
从类 java.util.AbstractCollection 继承的方法
contains, containsAll, isEmpty, removeAll, retainAll, toString
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
从接口 java.util.Queue 继承的方法
element, remove
 
从接口 java.util.Collection 继承的方法
addAll, contains, containsAll, equals, hashCode, isEmpty, removeAll, retainAll
 

构造方法详细信息

DelayQueue

public DelayQueue()
创建一个最初为空的新 DelayQueue


DelayQueue

public DelayQueue(Collection<? extends E> c)
创建一个最初包含 Delayed 实例的给定 collection 中的元素的 DelayQueue

参数:
c - collection
抛出:
NullPointerException - 如果 c 或者 collection 中的任何元素为 null
方法详细信息

offer

public boolean offer(E o)
将指定元素插入到此延迟队列中。

指定者:
接口 BlockingQueue<E extends Delayed> 中的 offer
指定者:
接口 Queue<E extends Delayed> 中的 offer
参数:
o - 要添加的元素
返回:
true
抛出:
NullPointerException - 如果指定的元素为 null

put

public void put(E o)
将指定元素添加到此延迟队列中。由于该队列是无界的,所以此方法永远不会阻塞。

指定者:
接口 BlockingQueue<E extends Delayed> 中的 put
参数:
o - 要添加的元素
抛出:
NullPointerException - 如果指定的元素为 null

offer

public boolean offer(E o,
                     long timeout,
                     TimeUnit unit)
将指定元素插入到此延迟队列中。由于该队列是无界的,所以此方法永远不会阻塞。

指定者:
接口 BlockingQueue<E extends Delayed> 中的 offer
参数:
o - 要添加的元素
timeout - 因为该方法永远不会阻塞,所以忽略此参数
unit - 因为该方法永远不会阻塞,所以忽略此参数
返回:
true
抛出:
NullPointerException - 如果指定的元素为 null

add

public boolean add(E o)
将指定元素添加到此队列中。

指定者:
接口 Collection<E extends Delayed> 中的 add
指定者:
接口 BlockingQueue<E extends Delayed> 中的 add
覆盖:
AbstractQueue<E extends Delayed> 中的 add
参数:
o - 要添加的元素
返回:
true(按照 Collection.add 的常规协定)。
抛出:
NullPointerException - 如果指定的元素为 null

take

public E take()
                       throws InterruptedException
检索并移除此队列的头部,如果此队列不存在未到期延迟的元素,则等待它。

指定者:
接口 BlockingQueue<E extends Delayed> 中的 take
返回:
此队列的头部
抛出:
InterruptedException - 如果等待时中断。

poll

public E poll(long timeout,
              TimeUnit unit)
                       throws InterruptedException
检索并移除此队列的头部,如果此队列不存在未到期延迟的元素,则在到达指定的等待时间之前,一直等待(如果有必要)。

指定者:
接口 BlockingQueue<E extends Delayed> 中的 poll
参数:
timeout - 放弃前要等待的时间长度,以 unit 为时间单位
unit - 确定如何解释 timeout 参数的 TimeUnit
返回:
此队列的头部;如果在出现未到期延迟的元素之前超出了指定的等待时间,则返回 null
抛出:
InterruptedException - 如果在等待时被中断。

poll

public E poll()
检索并移除此队列的头部,如果此队列不存在未到期延迟的元素,则返回 null

指定者:
接口 Queue<E extends Delayed> 中的 poll
返回:
此队列的头部,如果此队列不存在未期满延迟的元素,则返回 null

peek

public E peek()
检索但不移除此队列的头部,如果此队列不存在未到期延迟的元素,则返回 null

指定者:
接口 Queue<E extends Delayed> 中的 peek
返回:
此队列的头部,如果此队列不存在未到期延迟的元素,则返回 null

size

public int size()
从类 AbstractCollection 复制的描述
返回此 collection 中的元素数。如果该 collection 包含多于 Integer.MAX_VALUE 的元素,则返回 Integer.MAX_VALUE

指定者:
接口 Collection<E extends Delayed> 中的 size
指定者:
AbstractCollection<E extends Delayed> 中的 size
返回:
此 collection 中的元素数。

drainTo

public int drainTo(Collection<? super E> c)
从接口 BlockingQueue 复制的描述
移除此队列中所有可用的元素,并将它们添加到给定 collection 中。此操作可能比反复轮询此队列更有效。在试图向 c 集合中 add 元素没有成功时,可能导致在抛出相关异常时,元素会同时在两个 collection 中出现,或者在其中一个 collection 中出现,也可能在两个 collection 中都不出现。如果试图将一个队列放入自身队列中,则会导致 IllegalArgumentException 异常。此外,如果正在进行此操作时修改指定的 collection,则此操作行为是不确定的。

指定者:
接口 BlockingQueue<E extends Delayed> 中的 drainTo
参数:
c - 接收传输元素的 collection
返回:
传输元素的数量。

drainTo

public int drainTo(Collection<? super E> c,
                   int maxElements)
从接口 BlockingQueue 复制的描述
最多从此队列中移除给定数量的可用元素,并将这些元素添加到给定 collection 中。在试图向 c 集合中 add 元素没有成功时,可能导致在抛出相关异常时,元素会同时在两个 collection 中出现,或者在其中一个 collection 中出现,也可能在两个 collection 中都不出现。如果试图将一个队列放入自身队列中,则会导致 IllegalArgumentException 异常。此外,如果正在进行此操作时修改指定的 collection,则此操作行为是不确定的。

指定者:
接口 BlockingQueue<E extends Delayed> 中的 drainTo
参数:
c - 接收传输元素的 collection
maxElements - 传输元素的最大数量
返回:
传输元素的数量。

clear

public void clear()
自动移除此延迟队列中的所有元素。此调用返回后,队列将为空。

指定者:
接口 Collection<E extends Delayed> 中的 clear
覆盖:
AbstractQueue<E extends Delayed> 中的 clear

remainingCapacity

public int remainingCapacity()
因为 DelayQueue 没有容量限制,所以它总是返回 Integer.MAX_VALUE

指定者:
接口 BlockingQueue<E extends Delayed> 中的 remainingCapacity
返回:
Integer.MAX_VALUE

toArray

public Object[] toArray()
从类 AbstractCollection 复制的描述
返回包含此 collection 中所有元素的数组。如果此 collection 保证其迭代器按顺序返回其元素,那么此方法也必须按相同的顺序返回这些元素。返回的数组将是“安全的”,因为此 collection 并不维护对返回数组的任何引用。(换句话说,即使 collection 受到数组的支持,此方法也必须分配一个新的数组)。因此,调用方可以随意修改返回的数组。

此实现会分配返回的数组,并迭代 collection 中的元素,将每个对象引用存储在数组的下一个连续元素中,并从元素 0 开始。

指定者:
接口 Collection<E extends Delayed> 中的 toArray
覆盖:
AbstractCollection<E extends Delayed> 中的 toArray
返回:
包含此 collection 中所有元素的数组。

toArray

public <T> T[] toArray(T[] array)
从类 AbstractCollection 复制的描述
返回包含此 collection 中所有元素的数组;返回数组的运行时类型是指定数组的类型。如果指定的数组能容纳该 collection,则在此数组中返回 collection 的元素。否则,将根据指定数组的运行时类型和此 collection 的大小分配一个新数组。

如果指定的数组能容纳 collection,并且有剩余的空间(即数组的元素比 collection 多),那么会将紧挨着 collection 尾部的元素设置为 null(这对确定 collection 的长度很有用,但只有 在调用方知道 collection 不包含任何 null 元素时才可行)。

如果此 collection 保证其迭代器按顺序返回其元素,那么此方法也必须按相同的顺序返回这些元素。

此实现会检查该数组是否足够大,以包含该 collection 中的元素;如果不能包含,则将分配一个具有适当大小和类型的新数组(使用反射)。然后,在该 collection 上进行迭代,将每个对象引用存储在数组的下一个连续元素中,并从元素 0 开始。如果该数组比该 collection 大,则在该 collection 尾部后面的第一个位置存储 null

指定者:
接口 Collection<E extends Delayed> 中的 toArray
覆盖:
AbstractCollection<E extends Delayed> 中的 toArray
参数:
array - 存储此 collection 的元素的数组(如果其足够大);否则,将为此分配一个具有相同运行时类型的新数组。
返回:
包含此 collection 的元素的数组。

remove

public boolean remove(Object o)
从此队列中移除指定元素的单个实例(如果存在)。

指定者:
接口 Collection<E extends Delayed> 中的 remove
覆盖:
AbstractCollection<E extends Delayed> 中的 remove
参数:
o - 要从此 collection 中移除的元素(如果存在)。
返回:
如果该 collection 包含指定的元素,则返回 true

iterator

public Iterator<E> iterator()
返回在此队列中的元素上进行迭代的迭代器。迭代器并不按照任意特定顺序返回元素。返回的迭代器是一个线程安全的“快速失败”迭代器,它将基于检测到的干扰抛出 ConcurrentModificationException

指定者:
接口 Iterable<E extends Delayed> 中的 iterator
指定者:
接口 Collection<E extends Delayed> 中的 iterator
指定者:
AbstractCollection<E extends Delayed> 中的 iterator
返回:
在队列中的元素上进行迭代的迭代器。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策