An unbounded 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.
 
This class is a member of the Java Collections Framework.
extends 
<E> | the type of elements held in this queue |