| java.lang.Object | |||
| ↳ | java.util.AbstractCollection <E> | ||
| ↳ | java.util.AbstractQueue <E> | ||
| ↳ | java.util.concurrent.DelayQueue<E extends java.util.concurrent.Delayed > | ||
       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.
      
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 
          | 
        
          
          Creates a new
           
        
           DelayQueue
          
          that is initially empty.
          | 
       ||||||||||
| 
          | 
        
          
          Creates a
           
        
           DelayQueue
          
          initially containing the elements of the
 given collection of
          
           
            Delayed
           
          
          instances.
          | 
       ||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 
          | 
        
          
          Inserts the specified element into this delay queue.
          
         | 
       ||||||||||
| 
          | 
        
          
          Atomically removes all of the elements from this delay queue.
          
         | 
       ||||||||||
| 
          | 
        
          
          Removes at most the given number of available elements from
 this queue and adds them to the given collection.
          
         | 
       ||||||||||
| 
          | 
        
          
          Removes all available elements from this queue and adds them
 to the given collection.
          
         | 
       ||||||||||
| 
          | 
        
          
          Returns an iterator over all the elements (both expired and
 unexpired) in this queue.
          
         | 
       ||||||||||
| 
          | 
        
          
          Inserts the specified element into this delay queue.
          
         | 
       ||||||||||
| 
          | 
        
          
          Inserts the specified element into this delay queue.
          
         | 
       ||||||||||
| 
          | 
        
          
          Retrieves, but does not remove, the head of this queue, or
 returns
           
        
           null
          
          if this queue is empty.
          | 
       ||||||||||
| 
          | 
        
          
          Retrieves and removes the head of this queue, or returns
           
        
           null
          
          if this queue has no elements with an expired delay.
          | 
       ||||||||||
| 
          | 
        
          
          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.
          
         | 
       ||||||||||
| 
          | 
        
          
          Inserts the specified element into this delay queue.
          
         | 
       ||||||||||
| 
          | 
        
          
          Always returns
           
        
           Integer.MAX_VALUE
          
          because
 a
          
           DelayQueue
          
          is not capacity constrained.
          | 
       ||||||||||
| 
          | 
        
          
          Removes a single instance of the specified element from this
 queue, if it is present, whether or not it has expired.
          
         | 
       ||||||||||
| 
          | 
        
          
          Returns a count of how many objects this
           
        
           Collection
          
          contains.
          | 
       ||||||||||
| 
          | 
        
          
          Retrieves and removes the head of this queue, waiting if necessary
 until an element with an expired delay is available on this queue.
          
         | 
       ||||||||||
| 
          | 
        
          
          Returns an array containing all of the elements in this queue; the
 runtime type of the returned array is that of the specified array.
          
         | 
       ||||||||||
| 
          | 
        
          
          Returns an array containing all of the elements in this queue.
          
         | 
       ||||||||||
| 
         
          [Expand]
         
          
          Inherited Methods
          
         | 
       |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
         
           
         
         From class
         
          java.util.AbstractQueue
         
          | 
       |||||||||||
         
           
         
         From class
         
          java.util.AbstractCollection
         
          | 
       |||||||||||
         
           
         
         From class
         
          java.lang.Object
         
          | 
       |||||||||||
         
           
         
         From interface
         
          java.lang.Iterable
         
          | 
       |||||||||||
         
           
         
         From interface
         
          java.util.Collection
         
          | 
       |||||||||||
         
           
         
         From interface
         
          java.util.Queue
         
          | 
       |||||||||||
         
           
         
         From interface
         
          java.util.concurrent.BlockingQueue
         
          | 
       |||||||||||
         Creates a
         
          DelayQueue
         
         initially containing the elements of the
 given collection of
         
          
           Delayed
          
         
         instances.
        
| c | the collection of elements to initially contain | 
|---|
| NullPointerException | if the specified collection or any of its elements are null | 
|---|
Inserts the specified element into this delay queue.
| e | the element to add | 
|---|
           true
          
          (as specified by
          
           
            add(E)
           
          
          )
         | NullPointerException | if the specified element is null | 
|---|
Atomically removes all of the elements from this delay queue. The queue will be empty after this call returns. Elements with an unexpired delay are not waited for; they are simply discarded from the queue.
         Removes at most the given number of available elements from
 this queue and adds them to the given collection.  A failure
 encountered while attempting to add elements to
 collection
         
          c
         
         may result in elements being in neither,
 either or both collections when the associated exception is
 thrown.  Attempts to drain a queue to itself result in
         
          IllegalArgumentException
         
         . Further, the behavior of
 this operation is undefined if the specified collection is
 modified while the operation is in progress.
        
| c | the collection to transfer elements into | 
|---|---|
| maxElements | the maximum number of elements to transfer | 
         Removes all available elements from this queue and adds them
 to the given collection.  This operation may be more
 efficient than repeatedly polling this queue.  A failure
 encountered while attempting to add elements to
 collection
         
          c
         
         may result in elements being in neither,
 either or both collections when the associated exception is
 thrown.  Attempts to drain a queue to itself result in
         
          IllegalArgumentException
         
         . Further, the behavior of
 this operation is undefined if the specified collection is
 modified while the operation is in progress.
        
| c | the collection to transfer elements into | 
|---|
Returns an iterator over all the elements (both expired and unexpired) in this queue. The iterator does not return the elements in any particular order.
         The returned iterator is a "weakly consistent" iterator that
 will never throw
         
          
           ConcurrentModificationException
          
         
         , and guarantees to traverse
 elements as they existed upon construction of the iterator, and
 may (but is not guaranteed to) reflect any modifications
 subsequent to construction.
        
Inserts the specified element into this delay queue.
| e | the element to add | 
|---|
           true
          
         | NullPointerException | if the specified element is null | 
|---|
Inserts the specified element into this delay queue. As the queue is unbounded this method will never block.
| e | the element to add | 
|---|---|
| timeout | This parameter is ignored as the method never blocks | 
| unit | This parameter is ignored as the method never blocks | 
           true
          
         | NullPointerException | 
|---|
         Retrieves, but does not remove, the head of this queue, or
 returns
         
          null
         
         if this queue is empty.  Unlike
         
          poll
         
         , if no expired elements are available in the queue,
 this method returns the element that will expire next,
 if one exists.
        
           null
          
          if this
         queue is empty
         
         Retrieves and removes the head of this queue, or returns
         
          null
         
         if this queue has no elements with an expired delay.
        
           null
          
          if this
         queue has no elements with an expired delay
         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.
| timeout | 
           how long to wait before giving up, in units of
           
            unit
           
           | 
         
|---|---|
| unit | 
           a
           
            TimeUnit
           
           determining how to interpret the
           
            timeout
           
           parameter
           | 
         
           null
          
          if the
         specified waiting time elapses before an element with
         an expired delay becomes available
         | InterruptedException | 
|---|
Inserts the specified element into this delay queue. As the queue is unbounded this method will never block.
| e | the element to add | 
|---|
| NullPointerException | 
|---|
         Always returns
         
          Integer.MAX_VALUE
         
         because
 a
         
          DelayQueue
         
         is not capacity constrained.
        
           Integer.MAX_VALUE
          
         Removes a single instance of the specified element from this queue, if it is present, whether or not it has expired.
| o | the object to remove. | 
|---|
           true
          
          if this
          
           Collection
          
          is modified,
          
           false
          
          otherwise.
         
         Returns a count of how many objects this
         
          Collection
         
         contains.
        
         In this class this method is declared abstract and has to be implemented
 by concrete
         
          Collection
         
         implementations.
        
           Collection
          
          contains, or
          
           Integer.MAX_VALUE
          
          if there are more than
          
           Integer.MAX_VALUE
          
          elements in this
          
           Collection
          
          .
         Retrieves and removes the head of this queue, waiting if necessary until an element with an expired delay is available on this queue.
| InterruptedException | 
|---|
Returns an array containing all of the elements in this queue; the runtime type of the returned array is that of the specified array. The returned array elements are in no particular order. If the queue fits in the specified array, it is returned therein. Otherwise, a new array is allocated with the runtime type of the specified array and the size of this queue.
         If this queue fits in the specified array with room to spare
 (i.e., the array has more elements than this queue), the element in
 the array immediately following the end of the queue is set to
         
          null
         
         .
        
         Like the
         
          
           toArray()
          
         
         method, this method acts as bridge between
 array-based and collection-based APIs.  Further, this method allows
 precise control over the runtime type of the output array, and may,
 under certain circumstances, be used to save allocation costs.
        
         The following code can be used to dump a delay queue into a newly
 allocated array of
         
          Delayed
         
         :
         
          
           Delayed[] a = q.toArray(new Delayed[0]);
          
         
         Note that
         
          toArray(new Object[0])
         
         is identical in function to
         
          toArray()
         
         .
        
       | a | 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 | 
|---|
| 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 | 
Returns an array containing all of the elements in this queue. The returned array elements are in no particular order.
The returned array will be "safe" in that no references to it are maintained by this queue. (In other words, this method must allocate a new array). The caller is thus free to modify the returned array.
This method acts as bridge between array-based and collection-based APIs.