gpt4 book ai didi

java - ThreadLocalRandom 或每个线程的新 Random

转载 作者:行者123 更新时间:2023-11-30 03:13:41 26 4
gpt4 key购买 nike

当我在每个线程中创建新的 java.util.Random 对象或使用 ThreadLocalRandom.current().nextInt(3); 时有什么区别吗? ?根据我的阅读,应该使用 ThreadLocalRandom,而不是为所有线程使用相同的 java.util.Random 实例,但是如果为每个线程创建一个新实例会怎样?

如果我需要在多个线程中生成随机数,我什么时候应该使用 java.util.Random,什么时候使用 ThreadLocalRandom?

enter image description here

最佳答案

如果您像这里一样创建自己的线程,则没有什么区别。

但是,如果您的代码是从您无法控制的不同线程调用的,那么 ThreadLocalRandom 是正确的选择。

但有一个差异确实很重要:由于显而易见的原因,您无法为 ThreadLocalRandom 设置种子。因此,如果您想拥有可重复的序列,则需要创建自己的 Random 实例。 (但是,如果您运行多个线程,将 RNG 设定为相同的值并不总能保证可重复的行为。)

我个人会在不需要可重复序列的所有情况下使用ThreadLocalRandom

关于java - ThreadLocalRandom 或每个线程的新 Random,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33126322/

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