DelayQueue

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

An unbounded {@linkplain BlockingQueue blocking queue} of Delayed elements, in which an element can only be taken when its delay has expired. The head of the queue is that Delayed element whose delay expired furthest in the past. If no delay has expired there is no head and poll will return null. Expiration occurs when an element's getDelay(TimeUnit.NANOSECONDS) method returns a value less than or equal to zero. Even though unexpired elements cannot be removed using take or poll, they are otherwise treated as normal elements. For example, the size method returns the count of both expired and unexpired elements. This queue does not permit null elements.

This class and its iterator implement all of the optional methods of the Collection and Iterator interfaces. The Iterator provided in method iterator() is not guaranteed to traverse the elements of the DelayQueue in any particular order.

Public Constructor Summary

DelayQueue()
Creates a new DelayQueue that is initially empty.
DelayQueue(Collection<? extends E> c)
Creates a DelayQueue initially containing the elements of the given collection of Delayed instances.

Public Method Summary

boolean
add(E e)
Inserts the specified element into this delay queue.
void
clear()
Atomically removes all of the elements from this delay queue.
int
drainTo(Collection<? super E> c, int maxElements)
Removes at most the given number of available elements from this queue and adds them to the given collection.
int
drainTo(Collection<? super E> c)
Removes all available elements from this queue and adds them to the given collection.
Iterator<E>
iterator()
Returns an iterator over all the elements (both expired and unexpired) in this queue.
boolean
offer(E e)
Inserts the specified element into this delay queue.
boolean
offer(E e, long timeout, TimeUnit unit)
Inserts the specified element into this delay queue.
E
peek()
Retrieves, but does not remove, the head of this queue, or returns null if this queue is empty.
E
poll(long timeout, TimeUnit unit)
Retrieves and removes the head of this queue, waiting if necessary until an element with an expired delay is available on this queue, or the specified wait time expires.
E
poll()
Retrieves and removes the head of this queue, or returns null if this queue has no elements with an expired delay.
void
put(E e)
Inserts the specified element into this delay queue.
int
remainingCapacity()
Always returns Integer.MAX_VALUE because a DelayQueue is not capacity constrained.
boolean
remove(Object o)
Removes a single instance of the specified element from this queue, if it is present, whether or not it has expired.
int
size()
Returns the number of elements in this collection.
E
take()
Retrieves and removes the head of this queue, waiting if necessary until an element with an expired delay is available on this queue.
<T> T[]
toArray(T[] a)
Returns an array containing all of the elements in this queue; the runtime type of the returned array is that of the specified array.
Object[]
toArray()
Returns an array containing all of the elements in this queue.

Inherited Method Summary