2014-10-30 2 views
0

Мое требование - инициализировать очень большой массив int с уникальными случайными ints с использованием Fork/Join framework. Похоже, я могу использовать ThreadLocalRandom, потому что java-doc говорит, что он идеально подходит для использования в ситуации Fork/Join. Мой вопрос: поскольку каждый поток в пуле получает свой собственный экземпляр ThreadLocalRandom, который не является общим, есть ли вероятность того, что два потока генерируют один и тот же случайный int?ThreadLocalRandom consistency in Fork/Join

+1

Будут ли они случайными генераторами, если они никогда не будут генерировать одинаковое число? – dusky

ответ

0

Да - и вероятность будет, вероятно, примерно такой же, как использование только одного Random для всех потоков.

ThreadLocalRandom предназначен для сокращения конфликтов и накладных расходов (это может произойти, если несколько потоков используют один и тот же экземпляр), но дает NO GUARANTEE, что последовательности случайных чисел будут состоять из уникальных номеров.

Если требуется одностороннее требование, вы должны вручную проверить сгенерированные значения на все ранее сгенерированные.

+0

Что вам действительно нужно, это java.util.SplittableRandom в Java8. – edharned

Смежные вопросы