public final class ThreadLocalRandom
extends java.util.Random
Random generator used by the Math class, a ThreadLocalRandom is initialized
with an internally generated seed that may not otherwise be
modified. When applicable, use of ThreadLocalRandom rather
than shared Random objects in concurrent programs will
typically encounter much less overhead and contention. Use of
ThreadLocalRandom is particularly appropriate when multiple
tasks use random numbers in parallel in thread pools.
Usages of this class should typically be of the form:
ThreadLocalRandom.current().nextX(...) (where
X is Int, Long, etc).
When all usages are of this form, it is never possible to
accidently share a ThreadLocalRandom across multiple threads.
This class also provides additional commonly used bounded random generation methods.
| Modifier and Type | Field and Description |
|---|---|
private static long |
addend |
private boolean |
initialized
Initialization flag to permit the first and only allowed call
to setSeed (inside Random constructor) to succeed.
|
private static java.lang.ThreadLocal<ThreadLocalRandom> |
localRandom
The actual ThreadLocal
|
private static long |
mask |
private static long |
multiplier |
private long |
pad0 |
private long |
pad1 |
private long |
pad2 |
private long |
pad3 |
private long |
pad4 |
private long |
pad5 |
private long |
pad6 |
private long |
pad7 |
private long |
rnd
The random seed.
|
private static long |
serialVersionUID |
| Constructor and Description |
|---|
ThreadLocalRandom() |
| Modifier and Type | Method and Description |
|---|---|
static ThreadLocalRandom |
current()
Returns the current thread's
ThreadLocalRandom. |
protected int |
next(int bits) |
void |
setSeed(long seed)
Throws
UnsupportedOperationException. |
private static final long multiplier
private static final long addend
private static final long mask
private long rnd
private boolean initialized
private long pad0
private long pad1
private long pad2
private long pad3
private long pad4
private long pad5
private long pad6
private long pad7
private static final java.lang.ThreadLocal<ThreadLocalRandom> localRandom
private static final long serialVersionUID
public static ThreadLocalRandom current()
ThreadLocalRandom.ThreadLocalRandompublic void setSeed(long seed)
UnsupportedOperationException. Setting seeds in
this generator is not supported.setSeed in class java.util.Randomjava.lang.UnsupportedOperationException - alwaysprotected int next(int bits)
next in class java.util.Random