ThreadLocalRandom extends Random в каждом потоке создается новый обьек этого класса и в каждом потоке свой обьект этот обьект вызывает методы класса родителя все гениально и просто!
В Java каждый поток (thread) принадлежит определенной группе потоков (thread group). При создании нового потока без указания явно какой группе он принадлежит, поток автоматически присоединяется к группе потоков, к которой принадлежит поток-родитель (то есть поток, который создал данный поток).
По умолчанию, группой потоков для всех новых потоков, которые были созданы в рамках текущего приложения, является группа потоков "main". Это значит, что все новые потоки, которые были созданы в методе main класса Main, принадлежат к группе потоков "main". Если поток был создан в другом потоке, он будет принадлежать к группе потоков этого потока.
Зачем использовать ThreadLocalRandom вместо Math.random?
Использование ThreadLocalRandom полезно использовать там, где несколько потоков параллельно используют случайные числа.
Использование этого класса имеет форму: ThreadLocalRandom.current().nextX(...)(где X - Int, Long и т. д.). Использование генератора случайных чисел в такой форме не приводит к конфликту между несколькими потоками при получении числа. При этом по сравнению с Marh.random на выполнение тратится меньше ресурсов.
когда видишь задачу HARD на первых уровнях: о наверное интересная задача, люблю посложнее, ща я ее разберу...
когда видишь задачу HARD сейчас: так... ладно, сначала посмотрим че там в комментах пишут...
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ