Учебники

Класс ThreadLocalRandom

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 (), чтобы снять блокировку.

Live Demo

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 для получения случайных чисел.