1213 |
|
public boolean tryAdvance(Consumer<? super E> action) { |
1214 |
|
Objects.requireNonNull(action); |
1215 |
|
if (!exhausted) { |
1216 |
– |
final ReentrantLock lock = LinkedBlockingDeque.this.lock; |
1217 |
– |
Node<E> p = current; |
1216 |
|
E e = null; |
1217 |
+ |
final ReentrantLock lock = LinkedBlockingDeque.this.lock; |
1218 |
|
lock.lock(); |
1219 |
|
try { |
1220 |
+ |
Node<E> p = current; |
1221 |
|
if (p != null || (p = first) != null) |
1222 |
|
do { |
1223 |
|
e = p.item; |
1224 |
|
p = succ(p); |
1225 |
|
} while (e == null && p != null); |
1226 |
+ |
exhausted = ((current = p) == null); |
1227 |
|
} finally { |
1228 |
|
// checkInvariants(); |
1229 |
|
lock.unlock(); |
1230 |
|
} |
1230 |
– |
exhausted = ((current = p) == null); |
1231 |
|
if (e != null) { |
1232 |
|
action.accept(e); |
1233 |
|
return true; |