版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/strivenoend/article/details/83448002
这些类是用来生成伪随机数的,,但是ThreadLocalRandom类相比Random类在多线程环境下可以较少多线程资源竞争,保证线程安全
Random源码?
public class Random implements java.io.Serializable {
static final long serialVersionUID = 3905348978240129619L;
private final AtomicLong seed;
public Random() { this(seedUniquifier() ^ System.nanoTime()); }
public Random(long seed) { if (getClass() == Random.class) this.seed = new AtomicLong(initialScramble(seed)); else { // subclass might have overriden setSeed this.seed = new AtomicLong(); setSeed(seed); } }
synchronized public void setSeed(long seed) { this.seed.set(initialScramble(seed)); haveNextNextGaussian = false; }
}
ThreadLocalRandom源码类?
public class ThreadLocalRandom extends Random {
private static final AtomicInteger probeGenerator = new AtomicInteger();
private static final AtomicLong seeder = new AtomicLong(initialSeed());
private ThreadLocalRandom() { initialized = true; // false during super() call }
static final ThreadLocalRandom instance = new ThreadLocalRandom();
}