--- jsr166/src/main/java/util/ArrayDeque.java 2016/11/20 15:49:25 1.120 +++ jsr166/src/main/java/util/ArrayDeque.java 2016/11/21 15:30:44 1.121 @@ -864,14 +864,15 @@ public class ArrayDeque extends Abstr } public boolean tryAdvance(Consumer action) { - if (action == null) - throw new NullPointerException(); - final int t, i; - if ((t = getFence()) == (i = cursor)) - return false; + Objects.requireNonNull(action); final Object[] es = elements; + if (fence < 0) { fence = tail; cursor = head; } // late-binding + final int i; + if ((i = cursor) == fence) + return false; + E e = nonNullElementAt(es, i); cursor = inc(i, es.length); - action.accept(nonNullElementAt(es, i)); + action.accept(e); return true; }