< prev index next >
src/java.base/share/classes/java/lang/ref/Reference.java
Print this page
*** 92,105 ****
private T referent; /* Treated specially by GC */
volatile ReferenceQueue<? super T> queue;
/* When active: NULL
* pending: this
* Enqueued: next reference in queue (or this if last)
! * Inactive: this
*/
@SuppressWarnings("rawtypes")
Reference next;
/* When active: next element in a discovered reference list maintained by GC (or this if last)
--- 92,111 ----
private T referent; /* Treated specially by GC */
volatile ReferenceQueue<? super T> queue;
+ /* When a Reference is de-queued from ReferenceQueue, Reference.next
+ * points to this object.
+ */
+ private static class Dequeued extends Reference<Void> { Dequeued() { super(null); } }
+ static final Reference DEQUEUED = new Dequeued();
+
/* When active: NULL
* pending: this
* Enqueued: next reference in queue (or this if last)
! * Inactive: DEQUEUED
*/
@SuppressWarnings("rawtypes")
Reference next;
/* When active: next element in a discovered reference list maintained by GC (or this if last)
< prev index next >