< 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 >