--- jsr166/src/test/tck/AbstractQueuedLongSynchronizerTest.java 2018/06/13 18:36:31 1.45 +++ jsr166/src/test/tck/AbstractQueuedLongSynchronizerTest.java 2019/08/13 23:05:18 1.48 @@ -12,7 +12,6 @@ import static java.util.concurrent.TimeU import java.util.Arrays; import java.util.Collection; import java.util.HashSet; -import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.locks.AbstractQueuedLongSynchronizer; import java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject; @@ -1265,7 +1264,7 @@ public class AbstractQueuedLongSynchroni // A synchronizer only offering a choice of failure modes class Sync extends AbstractQueuedLongSynchronizer { - boolean pleaseThrow; + volatile boolean pleaseThrow; @Override protected boolean tryAcquire(long ignored) { if (pleaseThrow) throw ex; return false; @@ -1287,7 +1286,7 @@ public class AbstractQueuedLongSynchroni final Thread thread = newStartedThread(new CheckedRunnable() { public void realRun() { try { - if (ThreadLocalRandom.current().nextBoolean()) + if (randomBoolean()) s.acquire(1); else s.acquireShared(1);