The Java™ Tutorials
Concurrent Random Numbers
Trail: Essential Classes
Lesson: Concurrency
Section: High Level Concurrency Objects

Concurrent Random Numbers

In JDK 7, java.util.concurrent includes a convenience class, ThreadLocalRandom, for applications that expect to use random numbers from multiple threads or ForkJoinTasks.

For concurrent access, using ThreadLocalRandom instead of Math.random() results in less contention and, ultimately, better performance.

All you need to do is call ThreadLocalRandom.current(), then call one of its methods to retrieve a random number. Here is one example:

int r = ThreadLocalRandom.current() .nextInt(4, 77);

Previous page: Atomic Variables
Next page: For Further Reading