Class ReferenceQueue<T>

java.lang.Object
java.lang.ref.ReferenceQueue<T>
Type Parameters:
T - the type of the reference object

public classReferenceQueue<T>extendsObject
Reference queues, to which registered reference objects are appended by the garbage collector after the appropriate reachability changes are detected.

Memory consistency effects: The enqueueing of a reference to a queue (by the garbage collector, or by a successful call toReference.enqueue())happens-before the reference is removed from the queue bypoll() orremove(long).

Since:
1.2
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a new reference-object queue.
  • Method Summary

    Modifier and Type
    Method
    Description
    Reference<? extendsT>
    Polls this queue to see if a reference object is available.
    Reference<? extendsT>
    Removes the next reference object in this queue, blocking until one becomes available.
    Reference<? extendsT>
    remove(long timeout)
    Removes the next reference object in this queue, blocking until either one becomes available or the given timeout period expires.
  • Constructor Details

    • ReferenceQueue

      public ReferenceQueue()
      Constructs a new reference-object queue.
  • Method Details

    • poll

      public Reference<? extendsT> poll()
      Polls this queue to see if a reference object is available. If one is available without further delay then it is removed from the queue and returned. Otherwise this method immediately returnsnull.
      Returns:
      A reference object, if one was immediately available, otherwisenull
      See Also:
    • remove

      public Reference<? extendsT> remove(long timeout) throwsInterruptedException
      Removes the next reference object in this queue, blocking until either one becomes available or the given timeout period expires.

      This method does not offer real-time guarantees: It schedules the timeout as if by invoking theObject.wait(long) method.

      Parameters:
      timeout - If positive, block for up totimeout milliseconds while waiting for a reference to be added to this queue. If zero, block indefinitely.
      Returns:
      A reference object, if one was available within the specified timeout period, otherwisenull
      Throws:
      IllegalArgumentException - If the value of the timeout argument is negative
      InterruptedException - If the timeout wait is interrupted
      See Also:
    • remove

      public Reference<? extendsT> remove() throwsInterruptedException
      Removes the next reference object in this queue, blocking until one becomes available.
      Returns:
      A reference object, blocking until one becomes available
      Throws:
      InterruptedException - If the wait is interrupted
      See Also: