Fork / Join中的ThreadLocalRandom一致性

时间:2014-10-30 15:11:05

标签: java multithreading

我的要求是使用Fork / Join框架使用唯一的随机整数初始化一个非常大的int数组。看起来我可以使用ThreadLocalRandom,因为java doc说它非常适合在Fork / Join情况下使用。我的问题是:由于池中的每个线程都有自己的ThreadLocalRandom实例,而不是共享,两个线程是否有可能生成相同的随机int?

1 个答案:

答案 0 :(得分:0)

是 - 并且概率可能与对所有线程仅使用一个Random的概率大致相同。

ThreadLocalRandom旨在减少争用和开销(如果多个线程使用相同的实例,可能会发生这种情况),但是给出 NO GUARANTEE ,随机数序列将由唯一数字组成。

如果需要unicity,则必须手动检查所有先前生成的值。