Most visited

Recently visited

Added in API level 1

DelayQueue

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

java.lang.Object
   ↳ java.util.AbstractCollection<E extends java.util.concurrent.Delayed>
     ↳ java.util.AbstractQueue<E extends java.util.concurrent.Delayed>
       ↳ java.util.concurrent.DelayQueue<E extends java.util.concurrent.Delayed>


无界blocking queueDelayed元件,其中,当其延迟已到期的元素只能采取。 队列的头部是过去最远延迟过期的元素Delayed 如果没有延迟已经过期,则没有头,并且poll将返回null 当元素的getDelay(TimeUnit.NANOSECONDS)方法返回小于或等于零的值时,就会发生过期。 即使未过期的元素不能使用takepoll删除,但它们在其他方面被视为正常元素。 例如, size方法返回已过期和未过期元素的计数。 该队列不允许空元素。

此类及其迭代器实现CollectionIterator接口的所有可选方法。 方法iterator()提供的迭代器保证以任何特定顺序遍历DelayQueue的元素。

Summary

Public constructors

DelayQueue()

创建最初为空的新的 DelayQueue

DelayQueue(Collection<? extends E> c)

创建一个 DelayQueue最初包含给定的 Delayed实例集合的 Delayed

Public methods

boolean add(E e)

将指定的元素插入到此延迟队列中。

void clear()

原子上从这个延迟队列中删除所有元素。

int drainTo(Collection<? super E> c, int maxElements)

最多从此队列中移除给定数量的可用元素,并将它们添加到给定集合中。

int drainTo(Collection<? super E> c)

从该队列中移除所有可用的元素,并将它们添加到给定的集合中。

Iterator<E> iterator()

返回此队列中所有元素(包括过期和未过期)的迭代器。

boolean offer(E e)

将指定的元素插入到此延迟队列中。

boolean offer(E e, long timeout, TimeUnit unit)

将指定的元素插入到此延迟队列中。

E peek()

检索但不移除此队列的头部,或者如果此队列为空,则返回 null

E poll(long timeout, TimeUnit unit)

检索并删除此队列的头部,如果需要等待,直到此队列上有延迟过期的元素,或者指定的等待时间过期。

E poll()

如果此队列没有延迟过期的元素,则检索并移除此队列的头部,或返回 null

void put(E e)

将指定的元素插入到此延迟队列中。

int remainingCapacity()

始终返回 Integer.MAX_VALUE因为 DelayQueue不受容量限制。

boolean remove(Object o)

从该队列中移除指定元素的单个实例(如果存在),是否已过期。

int size()

返回此集合中的元素数量。

E take()

检索并删除此队列的头部,如果有必要,请等待,直到此队列中有延迟过期的元素可用。

<T> T[] toArray(T[] a)

返回包含此队列中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型。

Object[] toArray()

返回包含此队列中所有元素的数组。

Inherited methods

From class java.util.AbstractQueue
From class java.util.AbstractCollection
From class java.lang.Object
From interface java.util.Queue
From interface java.util.Collection
From interface java.util.concurrent.BlockingQueue
From interface java.lang.Iterable

Public constructors

DelayQueue

Added in API level 1
DelayQueue ()

创建最初为空的新的 DelayQueue

DelayQueue

Added in API level 1
DelayQueue (Collection<? extends E> c)

创建一个 DelayQueue最初包含给定的 Delayed实例集合的 Delayed

Parameters
c Collection: the collection of elements to initially contain
Throws
NullPointerException if the specified collection or any of its elements are null

Public methods

add

Added in API level 1
boolean add (E e)

将指定的元素插入到此延迟队列中。

Parameters
e E: the element to add
Returns
boolean true (as specified by add(E))
Throws
NullPointerException if the specified element is null

clear

Added in API level 1
void clear ()

原子上从这个延迟队列中删除所有元素。 此通话返回后,队列将为空。 未等待延迟的元素不会等待; 他们只是从队列中被丢弃。

drainTo

Added in API level 1
int drainTo (Collection<? super E> c, 
                int maxElements)

最多从此队列中移除给定数量的可用元素,并将它们添加到给定集合中。 尝试将元素添加到集合c遇到的故障可能导致元素不在任何集合中,或者在引发关联异常时集合中的任何一个集合或两个集合都不在元素中。 尝试将队列IllegalArgumentException自身导致IllegalArgumentException 此外,如果在操作正在进行时修改了指定的集合,则此操作的行为未定义。

Parameters
c Collection: the collection to transfer elements into
maxElements int: the maximum number of elements to transfer
Returns
int the number of elements transferred
Throws
UnsupportedOperationException
ClassCastException
NullPointerException
IllegalArgumentException

drainTo

Added in API level 1
int drainTo (Collection<? super E> c)

从该队列中移除所有可用的元素,并将它们添加到给定的集合中。 该操作可能比重复轮询该队列更有效。 尝试将元素添加到集合c遇到的故障可能导致元素不在任何一个或两个集合中,当引发关联的异常时。 尝试排除队列本身导致IllegalArgumentException 此外,如果在操作正在进行时修改了指定的集合,则此操作的行为未定义。

Parameters
c Collection: the collection to transfer elements into
Returns
int the number of elements transferred
Throws
UnsupportedOperationException
ClassCastException
NullPointerException
IllegalArgumentException

iterator

Added in API level 1
Iterator<E> iterator ()

返回此队列中所有元素(包括过期和未过期)的迭代器。 迭代器不会以任何特定顺序返回元素。

返回的迭代器是 weakly consistent

Returns
Iterator<E> an iterator over the elements in this queue

offer

Added in API level 1
boolean offer (E e)

将指定的元素插入到此延迟队列中。

Parameters
e E: the element to add
Returns
boolean true
Throws
NullPointerException if the specified element is null

offer

Added in API level 1
boolean offer (E e, 
                long timeout, 
                TimeUnit unit)

将指定的元素插入到此延迟队列中。 由于队列是无界的,这个方法永远不会阻塞。

Parameters
e E: the element to add
timeout long: This parameter is ignored as the method never blocks
unit TimeUnit: This parameter is ignored as the method never blocks
Returns
boolean true
Throws
NullPointerException

peek

Added in API level 1
E peek ()

检索但不移除此队列的头部,或者如果此队列为空,则返回null poll不同,如果队列中没有可用的过期元素,则此方法返回下一个将过期的元素(如果存在)。

Returns
E the head of this queue, or null if this queue is empty

poll

Added in API level 1
E poll (long timeout, 
                TimeUnit unit)

检索并删除此队列的头部,如果需要等待,直到此队列上有延迟过期的元素,或者指定的等待时间过期。

Parameters
timeout long: how long to wait before giving up, in units of unit
unit TimeUnit: a TimeUnit determining how to interpret the timeout parameter
Returns
E the head of this queue, or null if the specified waiting time elapses before an element with an expired delay becomes available
Throws
InterruptedException

poll

Added in API level 1
E poll ()

如果此队列没有延迟过期的元素,则检索并移除此队列的头部,或返回 null

Returns
E the head of this queue, or null if this queue has no elements with an expired delay

put

Added in API level 1
void put (E e)

将指定的元素插入到此延迟队列中。 由于队列是无界的,这个方法永远不会阻塞。

Parameters
e E: the element to add
Throws
NullPointerException

remainingCapacity

Added in API level 1
int remainingCapacity ()

始终返回 Integer.MAX_VALUE因为 DelayQueue不受容量限制。

Returns
int Integer.MAX_VALUE

remove

Added in API level 1
boolean remove (Object o)

从该队列中移除指定元素的单个实例(如果存在),是否已过期。

Parameters
o Object: element to be removed from this collection, if present
Returns
boolean true if an element was removed as a result of this call

size

Added in API level 1
int size ()

返回此集合中的元素数量。 如果此集合包含多个Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE

Returns
int the number of elements in this collection

take

Added in API level 1
E take ()

检索并删除此队列的头部,如果有必要,请等待,直到此队列中有延迟过期的元素可用。

Returns
E the head of this queue
Throws
InterruptedException

toArray

Added in API level 1
T[] toArray (T[] a)

返回包含此队列中所有元素的数组; 返回数组的运行时类型是指定数组的运行时类型。 返回的数组元素没有特定的顺序。 如果队列适合指定的数组,则返回其中。 否则,将使用指定数组的运行时类型和此队列的大小分配一个新数组。

如果此队列符合指定数组并有空余空间(即,数组的元素多于此队列),则紧随队列尾部的阵列中的元素将设置为 null

toArray()方法一样,此方法充当基于数组和基于集合的API之间的桥梁。 此外,该方法允许精确控制输出数组的运行时类型,并且在某些情况下可以用于节省分配成本。

以下代码可用于将延迟队列转储到新分配的 Delayed数组中:

 Delayed[] a = q.toArray(new Delayed[0]);
Note that toArray(new Object[0]) is identical in function to toArray().

Parameters
a T: the array into which the elements of the queue are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose
Returns
T[] an array containing all of the elements in this queue
Throws
ArrayStoreException if the runtime type of the specified array is not a supertype of the runtime type of every element in this queue
NullPointerException if the specified array is null

toArray

Added in API level 1
Object[] toArray ()

返回包含此队列中所有元素的数组。 返回的数组元素没有特定的顺序。

返回的数组将是“安全”的,因为此队列不维护对它的引用。 (换句话说,这个方法必须分配一个新的数组)。 调用者可以自由修改返回的数组。

此方法充当基于数组和基于集合的API之间的桥梁。

Returns
Object[] an array containing all of the elements in this queue

Hooray!