# ReferenceQueue

public class **ReferenceQueue** extends [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)  
Reference queues, to which registered reference objects are appended by the
garbage collector after the appropriate reachability changes are detected.

### Public Constructor Summary

|---|---|
|   | [ReferenceQueue](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/ReferenceQueue.html#ReferenceQueue())() Constructs a new reference-object queue. |

### Public Method Summary

|---|---|
| [Reference](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/Reference.html)\<? extends T\> | [poll](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/ReferenceQueue.html#poll())() Polls this queue to see if a reference object is available. |
| [Reference](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/Reference.html)\<? extends T\> | [remove](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/ReferenceQueue.html#remove(long))(long timeout) Removes the next reference object in this queue, blocking until either one becomes available or the given timeout period expires. |
| [Reference](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/Reference.html)\<? extends T\> | [remove](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/ReferenceQueue.html#remove())() Removes the next reference object in this queue, blocking until one becomes available. |

### Inherited Method Summary

From class [java.lang.Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)

|---|---|
| [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [clone](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#clone())() Creates and returns a copy of this `Object`. |
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this instance with the specified object and indicates if they are equal. |
| void | [finalize](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#finalize())() Invoked when the garbage collector has detected that this instance is no longer reachable. |
| final [Class](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html)\<?\> | [getClass](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#getClass())() Returns the unique instance of `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html` that represents this object's class. |
| int | [hashCode](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#hashCode())() Returns an integer hash code for this object. |
| final void | [notify](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notify())() Causes a thread which is waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| final void | [notifyAll](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notifyAll())() Causes all threads which are waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#toString())() Returns a string containing a concise, human-readable description of this object. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long,%20int))(long timeout, int nanos) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long))(long timeout) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait())() Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object. |

## Public Constructors

#### public
**ReferenceQueue**
()

Constructs a new reference-object queue.

## Public Methods

#### public [Reference](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/Reference.html)\<? extends T\>
**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 returns null.

##### Returns

- A reference object, if one was immediately available, otherwise `null`

#### public [Reference](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/Reference.html)\<? extends T\>
**remove**
(long timeout)

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 the `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long)` method.

##### Parameters

| timeout | If positive, block for up to `timeout` 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, otherwise `null`

##### Throws

| [IllegalArgumentException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/IllegalArgumentException.html) | If the value of the timeout argument is negative |
| [InterruptedException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/InterruptedException.html) | If the timeout wait is interrupted |
|---|---|

#### public [Reference](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/ref/Reference.html)\<? extends T\>
**remove**
()

Removes the next reference object in this queue, blocking until one
becomes available.

##### Returns

- A reference object, blocking until one becomes available

##### Throws

| [InterruptedException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/InterruptedException.html) | If the wait is interrupted |
|---|---|