Класс ThreadLocalRandom
Класс ThreadLocalRandom предназначен для
генерации случайных чисел в многопоточных
приложениях. В отличие от класса Random,
каждый поток получает собственный экземпляр
генератора, что позволяет избежать блокировок
и конфликтов между потоками. Экземпляр класса
не создается через конструктор, а получается
с помощью статического метода current,
который возвращает генератор, привязанный
к текущему потоку. В первый параметр методов
генерации мы передаем начальную границу
диапазона (включая ее), во второй - конечную
границу (не включая ее).
Синтаксис
ThreadLocalRandom.current()
ThreadLocalRandom.current().nextInt(origin, bound)
ThreadLocalRandom.current().nextDouble(origin, bound)
ThreadLocalRandom.current().nextLong(origin, bound)
Пример
Давайте получим случайное целое число
в диапазоне от 1 до 10
(конечная граница не входит в результат):
import java.util.concurrent.ThreadLocalRandom;
public class Main
{
public static void main(String[] args)
{
int res = ThreadLocalRandom.current().nextInt(1, 10);
System.out.println(res);
}
}
Результат выполнения кода:
7
Пример
Давайте получим случайное вещественное число
в диапазоне от 0.0 до 1.0:
import java.util.concurrent.ThreadLocalRandom;
public class Main
{
public static void main(String[] args)
{
double res = ThreadLocalRandom.current().nextDouble(0.0, 1.0);
System.out.println(res);
}
}
Результат выполнения кода:
0.573198461256
Пример
Давайте сгенерируем три случайных числа в цикле и выведем их на экран:
import java.util.concurrent.ThreadLocalRandom;
public class Main
{
public static void main(String[] args)
{
for (int i = 0; i < 3; i++) {
int res = ThreadLocalRandom.current().nextInt(1, 100);
System.out.println(res);
}
}
}
Результат выполнения кода:
42
87
15
Пример
Давайте получим случайное логическое значение:
import java.util.concurrent.ThreadLocalRandom;
public class Main
{
public static void main(String[] args)
{
boolean res = ThreadLocalRandom.current().nextBoolean();
System.out.println(res);
}
}
Результат выполнения кода:
true
Смотрите также
-
класс
Random,
который генерирует случайные числа -
метод
current,
который возвращает генератор текущего потока -
метод
nextInt,
который возвращает случайное целое число -
метод
nextDouble,
который возвращает случайное вещественное число