diff -r 228c040622a2 -r f8bb207f9458 jdk/src/share/classes/java/lang/ref/ReferenceQueue.java --- a/jdk/src/share/classes/java/lang/ref/ReferenceQueue.java Thu Apr 02 11:13:56 2009 +0100 +++ b/jdk/src/share/classes/java/lang/ref/ReferenceQueue.java Thu Apr 02 11:19:34 2009 +0100 @@ -51,7 +51,7 @@ static private class Lock { }; private Lock lock = new Lock(); - private Reference head = null; + private volatile Reference head = null; private long queueLength = 0; boolean enqueue(Reference r) { /* Called only by Reference class */ @@ -95,6 +95,8 @@ * otherwise null */ public Reference poll() { + if (head == null) + return null; synchronized (lock) { return reallyPoll(); }