gpt4 book ai didi

java - ThreadLocalRandom 上的随机

转载 作者:IT老高 更新时间:2023-10-28 20:50:09 25 4
gpt4 key购买 nike

Instances of java.util.Random are threadsafe. However, the concurrent use of the same java.util.Random instance across threads may encounter contention and consequent poor performance. Consider instead using ThreadLocalRandom in multithreaded designs.

什么样的争用导致性能不佳?有人可以在这里解释一下吗?我不知道 Random 和 ThreadLocalRandom 中的什么算法使它们不同。

最佳答案

这可能会有所帮助:

http://thoughtfuljava.blogspot.com/2012/09/prefer-threadlocalrandom-over-random.html


引自来源:

通常要生成随机数,我们要么创建 java.util.Random 的实例,要么创建 Math.random() - 它在内部创建 的实例>java.util.Random 在第一次调用时。但是,在并发应用程序中使用上述内容会导致争用问题。

Random 是线程安全的,可供多个线程使用。但是,如果多个线程使用相同的 Random 实例,则多个线程共享相同的种子。它会导致多个线程之间的争用,从而导致性能下降。

ThreadLocalRandom 是解决上述问题的方法。 ThreadLocalRandom 每个线程都有一个 Random 实例,可以防止争用。


因此,基本上,每个线程使用一个随机实例可以让您停止同步必须由所有线程使用的种子。

关于java - ThreadLocalRandom 上的随机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23396033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com