< prev index next >
test/jdk/java/util/concurrent/tck/ThreadLocalRandomTest.java
Print this page
8234131: Miscellaneous changes imported from jsr166 CVS 2021-01
Reviewed-by: martin
@@ -382,31 +382,28 @@
// be polluted by previous tests.
final AtomicReference<ThreadLocalRandom> threadLocalRandom =
new AtomicReference<>();
final AtomicLong rand = new AtomicLong();
- long firstRand = 0;
- ThreadLocalRandom firstThreadLocalRandom = null;
-
Runnable getRandomState = new CheckedRunnable() {
public void realRun() {
ThreadLocalRandom current = ThreadLocalRandom.current();
assertSame(current, ThreadLocalRandom.current());
- // test bug: the following is not guaranteed and not true in JDK8
- // assertNotSame(current, threadLocalRandom.get());
rand.set(current.nextLong());
threadLocalRandom.set(current);
}};
- Thread first = newStartedThread(getRandomState);
- awaitTermination(first);
- firstRand = rand.get();
- firstThreadLocalRandom = threadLocalRandom.get();
+ awaitTermination(newStartedThread(getRandomState));
+ long firstRand = rand.get();
+ ThreadLocalRandom firstThreadLocalRandom = threadLocalRandom.get();
+ assertNotNull(firstThreadLocalRandom);
for (int i = 0; i < NCALLS; i++) {
- Thread t = newStartedThread(getRandomState);
- awaitTermination(t);
+ awaitTermination(newStartedThread(getRandomState));
+ if (testImplementationDetails)
+ // ThreadLocalRandom has been a singleton since jdk8.
+ assertSame(firstThreadLocalRandom, threadLocalRandom.get());
if (firstRand != rand.get())
return;
}
fail("all threads generate the same pseudo-random sequence");
}
< prev index next >