src/share/classes/java/lang/ref/Reference.java

Print this page

        

*** 94,103 **** --- 94,104 ---- /* 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) * pending: next element in the pending list (or null if last) * otherwise: NULL
*** 117,127 **** /* List of References waiting to be enqueued. The collector adds * References to this list, while the Reference-handler thread removes * them. This list is protected by the above lock object. The * list uses the discovered field to link its elements. */ ! private static Reference pending = null; /* High-priority thread to enqueue pending References */ private static class ReferenceHandler extends Thread { --- 118,128 ---- /* List of References waiting to be enqueued. The collector adds * References to this list, while the Reference-handler thread removes * them. This list is protected by the above lock object. The * list uses the discovered field to link its elements. */ ! private static Reference<Object> pending = null; /* High-priority thread to enqueue pending References */ private static class ReferenceHandler extends Thread {
*** 129,139 **** super(g, name); } public void run() { for (;;) { ! Reference r; synchronized (lock) { if (pending != null) { r = pending; pending = r.discovered; r.discovered = null; --- 130,140 ---- super(g, name); } public void run() { for (;;) { ! Reference<Object> r; synchronized (lock) { if (pending != null) { r = pending; pending = r.discovered; r.discovered = null;
*** 164,174 **** if (r instanceof Cleaner) { ((Cleaner)r).clean(); continue; } ! ReferenceQueue q = r.queue; if (q != ReferenceQueue.NULL) q.enqueue(r); } } } --- 165,175 ---- if (r instanceof Cleaner) { ((Cleaner)r).clean(); continue; } ! ReferenceQueue<Object> q = r.queue; if (q != ReferenceQueue.NULL) q.enqueue(r); } } }