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

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

add(E e)
Inserts the specified element into this delay queue.
Atomically removes all of the elements from this delay queue.
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.
drainTo(Collection<? super E> c)
Removes all available elements from this queue and adds them to the given collection.