Java.util.concurrent.ThreadLocalRandom — это служебный класс, введенный начиная с jdk 1.7 и более полезный, когда для генерации случайных чисел требуется несколько потоков или заданий ForkJoinTasks. Это улучшает производительность и имеет меньше конфликтов, чем метод Math.random ().
ThreadLocalRandom Методы
Ниже приведен список важных методов, доступных в классе ThreadLocalRandom.
Sr.No. | Метод и описание |
---|---|
1 |
общедоступная статическая ThreadLocalRandom current () Возвращает текущий поток ThreadLocalRandom. |
2 |
защищенный int следующий (int биты) Создает следующее псевдослучайное число. |
3 |
public double nextDouble (double n) Возвращает псевдослучайное, равномерно распределенное двойное значение между 0 (включительно) и указанным значением (исключая). |
4 |
public double nextDouble (двойной минимум, двойная граница) Возвращает псевдослучайное, равномерно распределенное значение между заданным наименьшим значением (включительно) и связанным (исключение). |
5 |
public int nextInt (минимум int, привязанный int) Возвращает псевдослучайное, равномерно распределенное значение между заданным наименьшим значением (включительно) и связанным (исключение). |
6 |
public long nextLong (long n) Возвращает псевдослучайное, равномерно распределенное значение между 0 (включительно) и указанным значением (исключая). |
7 |
public long nextLong (длинный, длинный) Возвращает псевдослучайное, равномерно распределенное значение между заданным наименьшим значением (включительно) и связанным (исключение). |
8 |
public void setSeed (long seed) Выдает UnsupportedOperationException. |
общедоступная статическая ThreadLocalRandom current ()
Возвращает текущий поток ThreadLocalRandom.
защищенный int следующий (int биты)
Создает следующее псевдослучайное число.
public double nextDouble (double n)
Возвращает псевдослучайное, равномерно распределенное двойное значение между 0 (включительно) и указанным значением (исключая).
public double nextDouble (двойной минимум, двойная граница)
Возвращает псевдослучайное, равномерно распределенное значение между заданным наименьшим значением (включительно) и связанным (исключение).
public int nextInt (минимум int, привязанный int)
Возвращает псевдослучайное, равномерно распределенное значение между заданным наименьшим значением (включительно) и связанным (исключение).
public long nextLong (long n)
Возвращает псевдослучайное, равномерно распределенное значение между 0 (включительно) и указанным значением (исключая).
public long nextLong (длинный, длинный)
Возвращает псевдослучайное, равномерно распределенное значение между заданным наименьшим значением (включительно) и связанным (исключение).
public void setSeed (long seed)
Выдает UnsupportedOperationException.
пример
Следующая программа TestThread демонстрирует некоторые из этих методов интерфейса Lock. Здесь мы использовали lock (), чтобы получить блокировку, и unlock (), чтобы снять блокировку.
import java.util.Random; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.ThreadLocalRandom; public class TestThread { public static void main(final String[] arguments) { System.out.println("Random Integer: " + new Random().nextInt()); System.out.println("Seeded Random Integer: " + new Random(15).nextInt()); System.out.println( "Thread Local Random Integer: " + ThreadLocalRandom.current().nextInt()); final ThreadLocalRandom random = ThreadLocalRandom.current(); random.setSeed(15); //exception will come as seeding is not allowed in ThreadLocalRandom. System.out.println("Seeded Thread Local Random Integer: " + random.nextInt()); } }
Это даст следующий результат.
Выход
Random Integer: 1566889198 Seeded Random Integer: -1159716814 Thread Local Random Integer: 358693993 Exception in thread "main" java.lang.UnsupportedOperationException at java.util.concurrent.ThreadLocalRandom.setSeed(Unknown Source) at TestThread.main(TestThread.java:21)
Здесь мы использовали классы ThreadLocalRandom и Random для получения случайных чисел.