Concurrent use of Java util. Random contention

Oracle Java documentation says:

Could it be the reason for poor performance?

Solution

Internally, Java util. Random keeps atomiclong from the current seed and competes to update the seed whenever a new random number is requested

From Java util. Random implementation:

protected int next(int bits) {
    long oldseed,nextseed;
    AtomicLong seed = this.seed;
    do {
        oldseed = seed.get();
        nextseed = (oldseed * multiplier + addend) & mask;
    } while (!seed.compareAndSet(oldseed,nextseed));
    return (int)(nextseed >>> (48 - bits));
}

On the other hand, threadlocalrandom ensures that the seed is updated without any contention by having a seed per thread

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>