--- jsr166/src/jsr166e/ConcurrentHashMapV8.java 2013/12/01 13:39:02 1.117 +++ jsr166/src/jsr166e/ConcurrentHashMapV8.java 2013/12/01 16:08:12 1.118 @@ -2732,14 +2732,15 @@ public class ConcurrentHashMapV8 ex * using tree comparisons from root, but continues linear * search when lock not available. */ -final Node find(int h, Object k) { + final Node find(int h, Object k) { if (k != null) { - for (Node e = first; e != null; e = e.next) { + for (Node e = first; e != null; ) { int s; K ek; if (((s = lockState) & (WAITER|WRITER)) != 0) { if (e.hash == h && ((ek = e.key) == k || (ek != null && k.equals(ek)))) return e; + e = e.next; } else if (U.compareAndSwapInt(this, LOCKSTATE, s, s + READER)) {