我的要求是使用Fork / Join框架使用唯一的随机整数初始化一个非常大的int数组。看起来我可以使用ThreadLocalRandom,因为java doc说它非常适合在Fork / Join情况下使用。我的问题是:由于池中的每个线程都有自己的ThreadLocalRandom实例,而不是共享,两个线程是否有可能生成相同的随机int?
答案 0 :(得分:0)
是 - 并且概率可能与对所有线程仅使用一个Random的概率大致相同。
ThreadLocalRandom旨在减少争用和开销(如果多个线程使用相同的实例,可能会发生这种情况),但是给出 NO GUARANTEE ,随机数序列将由唯一数字组成。
如果需要unicity,则必须手动检查所有先前生成的值。