332 |
|
private void finishCompletion() { |
333 |
|
// assert state > COMPLETING; |
334 |
|
for (WaitNode q; (q = waiters) != null;) { |
335 |
< |
if (WAITERS.weakCompareAndSetVolatile(this, q, null)) { |
335 |
> |
if (WAITERS.weakCompareAndSet(this, q, null)) { |
336 |
|
for (;;) { |
337 |
|
Thread t = q.thread; |
338 |
|
if (t != null) { |
394 |
|
q = new WaitNode(); |
395 |
|
} |
396 |
|
else if (!queued) |
397 |
< |
queued = WAITERS.weakCompareAndSetVolatile(this, q.next = waiters, q); |
397 |
> |
queued = WAITERS.weakCompareAndSet(this, q.next = waiters, q); |
398 |
|
else if (timed) { |
399 |
|
final long parkNanos; |
400 |
|
if (startTime == 0L) { // first time |