Spec-Zone.ru › OpenJDK 24

Класс ThreadLocalRandom

java.lang.Object
java.util.Random
java.util.concurrent.ThreadLocalRandom
Все реализованные интерфейсы:
Serializable, RandomGenerator
public final class ThreadLocalRandom extends Random
Генератор псевдослучайных чисел (с периодом 264), изолированный для текущей нити. Как и глобальный генератор Random, используемый классом Math, генератор ThreadLocalRandom инициализируется внутренне сгенерированным значением, которое нельзя изменить. В многопоточных программах использование ThreadLocalRandom вместо общих Random объектов обычно приводит к значительно меньшему накладным расходам и конфликтам. Использование ThreadLocalRandom особенно подходит, когда несколько задач (например, каждая из которых — ForkJoinTask) используют случайные числа параллельно в пулах потоков.

Использование этого класса обычно должно быть в форме: ThreadLocalRandom.current().nextX(...) (где X это Int, Long и т.д.). При таком использовании невозможно случайно разделить ThreadLocalRandom между несколькими нитями.

Этот класс также предоставляет дополнительные часто используемые методы ограниченной генерации случайных чисел.

Экземпляры ThreadLocalRandom не являются криптографически безопасными. В приложениях, чувствительных к безопасности, используйте вместо этого SecureRandom. Кроме того, экземпляры, созданные по умолчанию, не используют криптографически случайное значение, если системная переменная java.util.secureRandomSeed не установлена в true.

С момента:
1.7
См. также:
  • Сериализованная форма

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе java.util.random.RandomGenerator

RandomGenerator.ArbitrarilyJumpableGenerator, RandomGenerator.JumpableGenerator, RandomGenerator.LeapableGenerator, RandomGenerator.SplittableGenerator, RandomGenerator.StreamableGenerator

Краткое описание методов

Модификатор и тип Метод Описание
static ThreadLocalRandom current()
Возвращает объект ThreadLocalRandom текущей нити.
DoubleStream doubles()
Возвращает эффективно неограниченный поток значений псевдослучайных double, каждое из которых находится между нулём (включительно) и единицей (исключительно).
DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
Возвращает эффективно неограниченный поток значений псевдослучайных double, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).
DoubleStream doubles(long streamSize)
Возвращает поток, генерирующий заданное число streamSize псевдослучайных значений double, каждое из которых находится между нулём (включительно) и единицей (исключительно).
DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
Возвращает поток, генерирующий заданное число streamSize псевдослучайных double значений, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).
IntStream ints()
Возвращает эффективно неограниченный поток значений псевдослучайных int.
IntStream ints(int randomNumberOrigin, int randomNumberBound)
Возвращает эффективно неограниченный поток значений псевдослучайных int, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).
IntStream ints(long streamSize)
Возвращает поток, генерирующий заданное число streamSize псевдослучайных значений int.
IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
Возвращает поток, генерирующий заданное число streamSize псевдослучайных int значений, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).
LongStream longs()
Возвращает эффективно неограниченный поток значений псевдослучайных long.
LongStream longs(long streamSize)
Возвращает поток, генерирующий заданное число streamSize псевдослучайных значений long.
LongStream longs(long randomNumberOrigin, long randomNumberBound)
Возвращает эффективно неограниченный поток значений псевдослучайных long, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).
LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
Возвращает поток, генерирующий заданное число streamSize псевдослучайных long, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).
protected int next(int bits)
Генерирует псевдослучайное число с указанным числом младших битов.
double nextDouble(double bound)
Возвращает псевдослучайное значение double между нулём (включительно) и заданной границей (исключительно).
double nextDouble(double origin, double bound)
Возвращает псевдослучайное значение double между заданным началом (включительно) и заданной границей (исключительно).
float nextFloat(float bound)
Возвращает псевдослучайное значение float между нулём (включительно) и заданной границей (исключительно).
float nextFloat(float origin, float bound)
Возвращает псевдослучайное значение float между заданным началом (включительно) и заданной границей (исключительно).
int nextInt(int bound)
Возвращает псевдослучайное, равномерно распределённое значение int между 0 (включительно) и указанным значением (исключительно), взятое из последовательности этого генератора случайных чисел.
int nextInt(int origin, int bound)
Возвращает псевдослучайное значение int между заданным началом (включительно) и заданной границей (исключительно).
long nextLong(long bound)
Возвращает псевдослучайное значение long между нулём (включительно) и заданной границей (исключительно).
long nextLong(long origin, long bound)
Возвращает псевдослучайное значение long между заданным началом (включительно) и заданной границей (исключительно).
void setSeed(long seed)
Выбрасывает UnsupportedOperationException.

Методы, объявленные в классе java.util.Random

from, nextBoolean, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextLong

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе java.util.random.RandomGenerator

equiDoubles, isDeprecated, nextExponential, nextGaussian

Подробное описание методов

current

public static ThreadLocalRandom current()
Возвращает текущий объект потока. Методы этого объекта должны вызываться только текущим потоком, а не другими потоками.
Возвращает:
объект текущего потока ThreadLocalRandom

setSeed

public void setSeed(long seed)
Выбрасывает UnsupportedOperationException. Установка семян в этом генераторе не поддерживается.
Переопределяет:
setSeed в классе Random
Параметры:
seed - значение семени
Выбрасывает:
UnsupportedOperationException - всегда

next

protected int next(int bits)
Генерирует псевдослучайное число с указанным числом младших битов. Поскольку этот класс не имеет подклассов, этот метод не может быть вызван или переопределён.
Переопределяет:
next в классе Random
Параметры:
bits - случайные биты
Возвращает:
следующее псевдослучайное значение из последовательности этого генератора псевдослучайных чисел

nextInt

public int nextInt(int bound)
Возвращает псевдослучайное, равномерно распределённое целое значение между 0 (включительно) и указанным значением (исключительно), взятое из последовательности этого генератора псевдослучайных чисел. Общий контракт nextInt заключается в том, что одно случайное целое значение в заданном диапазоне генерируется псевдослучайно и возвращается. Все возможные значения int генерируются с (приблизительно) равной вероятностью.
Определено в:
nextInt в интерфейсе RandomGenerator
Переопределяет:
nextInt в классе Random
Параметры:
bound - верхняя граница (исключительно). Должно быть положительным.
Возвращает:
следующее псевдослучайное, равномерно распределённое целое значение между нулём (включительно) и bound (исключительно) из последовательности этого генератора псевдослучайных чисел
Выбрасывает:
IllegalArgumentException - если граница не положительна

nextInt

public int nextInt(int origin, int bound)
Возвращает псевдослучайно выбранное целое значение между указанным началом (включительно) и указанной границей (исключительно).
Параметры:
origin - наименьшее значение, которое может быть возвращено
bound - верхняя граница (исключительно) для возвращаемого значения
Возвращает:
псевдослучайно выбранное целое значение между началом (включительно) и границей (исключительно)
Выбрасывает:
IllegalArgumentException - если origin больше или равно bound

nextLong

public long nextLong(long bound)
Возвращает псевдослучайное значение типа long между нулём (включительно) и указанной границей (исключительно).
Параметры:
bound - верхняя граница (исключительно) для возвращаемого значения. Должно быть положительным.
Возвращает:
псевдослучайно выбранное значение типа long между нулём (включительно) и границей (исключительно)
Выбрасывает:
IllegalArgumentException - если bound не положительно

nextLong

public long nextLong(long origin, long bound)
Возвращает псевдослучайное значение типа long между указанным началом (включительно) и указанной границей (исключительно).
Параметры:
origin - наименьшее значение, которое может быть возвращено
bound - верхняя граница (исключительно) для возвращаемого значения
Возвращает:
псевдослучайно выбранное значение типа long между началом (включительно) и границей (исключительно)
Выбрасывает:
IllegalArgumentException - если origin больше или равно bound

nextFloat

public float nextFloat(float bound)
Возвращает псевдослучайное значение типа float между нулём (включительно) и указанной границей (исключительно).
Примечание для реализации:
Параметры:
bound - верхняя граница (исключительно) для возвращаемого значения. Должно быть положительным и конечным
Возвращает:
псевдослучайно выбранное значение типа float между нулём (включительно) и границей (исключительно)
Выбрасывает:
IllegalArgumentException - если bound не является положительным и конечным
С:
17

nextFloat

public float nextFloat(float origin, float bound)
Возвращает псевдослучайное значение типа float между указанным началом (включительно) и указанной границей (исключительно).
Примечание для реализации:
Параметры:
origin - наименьшее значение, которое может быть возвращено
bound - верхняя граница (исключительно)
Возвращает:
псевдослучайно выбранное значение типа float между началом (включительно) и границей (исключительно)
Выбрасывает:
IllegalArgumentException - если origin не является конечным, или bound не является конечным, или origin больше или равно bound
С:
17

nextDouble

public double nextDouble(double bound)
Возвращает псевдослучайное значение типа double между нулём (включительно) и указанной границей (исключительно).
Примечание для реализации:
Параметры:
bound - верхняя граница (исключительно) для возвращаемого значения. Должно быть положительным и конечным
Возвращает:
псевдослучайно выбранное значение типа double между нулём (включительно) и границей (исключительно)
Выбрасывает:
IllegalArgumentException - если bound не является положительным и конечным

nextDouble

public double nextDouble(double origin, double bound)
Возвращает псевдослучайное значение типа double между указанным началом (включительно) и указанной границей (исключительно).
Примечание для реализации:
Параметры:
origin - наименьшее значение, которое может быть возвращено
bound - верхняя граница (исключительно) для возвращаемого значения
Возвращает:
псевдослучайно выбранное значение типа double между началом (включительно) и границей (исключительно)
Выбрасывает:
IllegalArgumentException - если origin не является конечным, или bound не является конечным, или origin больше или равно bound

ints

public IntStream ints(long streamSize)
Возвращает поток, генерирующий заданное количество псевдослучайных целых значений.

Псевдослучайное целое значение генерируется как результат вызова метода Random.nextInt().

Определено в:
ints в интерфейсе RandomGenerator
Переопределяет:
ints в классе Random
Параметры:
streamSize - количество значений для генерации
Возвращает:
поток псевдослучайных целых значений
Выбрасывает:
IllegalArgumentException - если streamSize меньше нуля
С:
1.8

ints

public IntStream ints()
Возвращает эффективно неограниченный поток псевдослучайных целых значений.

Псевдослучайное целое значение генерируется как результат вызова метода Random.nextInt().

Определено в:
ints в интерфейсе RandomGenerator
Переопределяет:
ints в классе Random
Примечание для реализации:
Этот метод реализован для эквивалентности ints(Long.MAX_VALUE).
Возвращает:
поток псевдослучайных целых значений
С:
1.8

ints

public IntStream ints(long streamSize, int randomNumberOrigin, int randomNumberBound)
Возвращает поток, генерирующий заданное количество псевдослучайных целых значений, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).

Псевдослучайное целое значение генерируется как результат вызова следующего метода с началом и границей:

 
 int nextInt(int origin, int bound) {
   int n = bound - origin;
   if (n > 0) {
     return nextInt(n) + origin;
   }
   else {  // range not representable as int
     int r;
     do {
       r = nextInt();
     } while (r < origin || r >= bound);
     return r;
   }
 }
Определено в:
ints в интерфейсе RandomGenerator
Переопределяет:
ints в классе Random
Параметры:
streamSize - количество значений для генерации
randomNumberOrigin - начало (включительно) для каждого случайного значения
randomNumberBound - граница (исключительно) для каждого случайного значения
Возвращает:
поток псевдослучайных целых значений, каждое из которых имеет заданное начало (включительно) и границу (исключительно)
Выбрасывает:
IllegalArgumentException - если streamSize меньше нуля, или randomNumberOrigin больше или равно randomNumberBound
С:
1.8

ints

public IntStream ints(int randomNumberOrigin, int randomNumberBound)
Возвращает эффективно неограниченный поток псевдослучайных int значений, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).

Значение псевдослучайного int генерируется так, как если бы оно было результатом вызова следующего метода с началом и границей:

 
 int nextInt(int origin, int bound) {
   int n = bound - origin;
   if (n > 0) {
     return nextInt(n) + origin;
   }
   else {  // range not representable as int
     int r;
     do {
       r = nextInt();
     } while (r < origin || r >= bound);
     return r;
   }
 }
Указано в:
ints в интерфейсе RandomGenerator
Переопределяет:
ints в классе Random
Примечание о реализации:
Этот метод реализован так, чтобы быть эквивалентным ints(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin - начало (включительно) каждого случайного значения
randomNumberBound - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных int значений, каждое из которых имеет заданное начало (включительно) и границу (исключительно)
Исключение:
IllegalArgumentException - если randomNumberOrigin больше или равно randomNumberBound
С:
1.8

longs

public LongStream longs(long streamSize)
Возвращает поток, генерирующий заданное количество псевдослучайных long значений.

Значение псевдослучайного long генерируется так, как если бы оно было результатом вызова метода Random.nextLong().

Указано в:
longs в интерфейсе RandomGenerator
Переопределяет:
longs в классе Random
Параметры:
streamSize - количество генерируемых значений
Возвращает:
поток псевдослучайных long значений
Исключение:
IllegalArgumentException - если streamSize меньше нуля
С:
1.8

longs

public LongStream longs()
Возвращает эффективно неограниченный поток псевдослучайных long значений.

Значение псевдослучайного long генерируется так, как если бы оно было результатом вызова метода Random.nextLong().

Указано в:
longs в интерфейсе RandomGenerator
Переопределяет:
longs в классе Random
Примечание о реализации:
Этот метод реализован так, чтобы быть эквивалентным longs(Long.MAX_VALUE).
Возвращает:
поток псевдослучайных long значений
С:
1.8

longs

public LongStream longs(long streamSize, long randomNumberOrigin, long randomNumberBound)
Возвращает поток, генерирующий заданное количество псевдослучайных long значений, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).

Значение псевдослучайного long генерируется так, как если бы оно было результатом вызова следующего метода с началом и границей:

 
 long nextLong(long origin, long bound) {
   long r = nextLong();
   long n = bound - origin, m = n - 1;
   if ((n & m) == 0L)  // power of two
     r = (r & m) + origin;
   else if (n > 0L) {  // reject over-represented candidates
     for (long u = r >>> 1;            // ensure nonnegative
          u + m - (r = u % n) < 0L;    // rejection check
          u = nextLong() >>> 1) // retry
         ;
     r += origin;
   }
   else {              // range not representable as long
     while (r < origin || r >= bound)
       r = nextLong();
   }
   return r;
 }
Указано в:
longs в интерфейсе RandomGenerator
Переопределяет:
longs в классе Random
Параметры:
streamSize - количество генерируемых значений
randomNumberOrigin - начало (включительно) каждого случайного значения
randomNumberBound - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных long значений, каждое из которых имеет заданное начало (включительно) и границу (исключительно)
Исключение:
IllegalArgumentException - если streamSize меньше нуля, или randomNumberOrigin больше или равно randomNumberBound
С:
1.8

longs

public LongStream longs(long randomNumberOrigin, long randomNumberBound)
Возвращает эффективно неограниченный поток псевдослучайных long значений, каждое из которых соответствует заданному началу (включительно) и границе (исключительно).

Значение псевдослучайного long генерируется так, как если бы оно было результатом вызова следующего метода с началом и границей:

 
 long nextLong(long origin, long bound) {
   long r = nextLong();
   long n = bound - origin, m = n - 1;
   if ((n & m) == 0L)  // power of two
     r = (r & m) + origin;
   else if (n > 0L) {  // reject over-represented candidates
     for (long u = r >>> 1;            // ensure nonnegative
          u + m - (r = u % n) < 0L;    // rejection check
          u = nextLong() >>> 1) // retry
         ;
     r += origin;
   }
   else {              // range not representable as long
     while (r < origin || r >= bound)
       r = nextLong();
   }
   return r;
 }
Указано в:
longs в интерфейсе RandomGenerator
Переопределяет:
longs в классе Random
Примечание о реализации:
Этот метод реализован так, чтобы быть эквивалентным longs(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin - начало (включительно) каждого случайного значения
randomNumberBound - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных long значений, каждое из которых имеет заданное начало (включительно) и границу (исключительно)
Исключение:
IllegalArgumentException - если randomNumberOrigin больше или равно randomNumberBound
С:
1.8

doubles

public DoubleStream doubles(long streamSize)
Возвращает поток, генерирующий заданное количество псевдослучайных double значений, каждое между нулём (включительно) и единицей (исключительно).

Значение псевдослучайного double генерируется так, как если бы оно было результатом вызова метода Random.nextDouble().

Указано в:
doubles в интерфейсе RandomGenerator
Переопределяет:
doubles в классе Random
Параметры:
streamSize - количество генерируемых значений
Возвращает:
поток double значений
Исключение:
IllegalArgumentException - если streamSize меньше нуля
С:
1.8

doubles

public DoubleStream doubles()
Возвращает эффективно неограниченный поток псевдослучайных double значений, каждое между нулём (включительно) и единицей (исключительно).

Значение псевдослучайного double генерируется так, как если бы оно было результатом вызова метода Random.nextDouble().

Указано в:
doubles в интерфейсе RandomGenerator
Переопределяет:
doubles в классе Random
Примечание о реализации:
Этот метод реализован так, чтобы быть эквивалентным doubles(Long.MAX_VALUE).
Возвращает:
поток псевдослучайных double значений
С:
1.8

doubles

public DoubleStream doubles(long streamSize, double randomNumberOrigin, double randomNumberBound)
Возвращает поток, генерирующий заданное количество псевдослучайных double значений, каждое соответствующее заданному началу (включительно) и границе (исключительно).
Указано в:
doubles в интерфейсе RandomGenerator
Переопределяет:
doubles в классе Random
Параметры:
streamSize - количество генерируемых значений
randomNumberOrigin - начало (включительно) каждого случайного значения
randomNumberBound - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных double значений, каждое с заданным началом (включительно) и границей (исключительно)
Исключение:
IllegalArgumentException - если streamSize меньше нуля, или randomNumberOrigin не конечно, или randomNumberBound не конечно, или randomNumberOrigin больше или равно randomNumberBound
С:
1.8

doubles

public DoubleStream doubles(double randomNumberOrigin, double randomNumberBound)
Возвращает эффективно неограниченный поток псевдослучайных double значений, каждое соответствующее заданному началу (включительно) и границе (исключительно).
Указано в:
doubles в интерфейсе RandomGenerator
Переопределяет:
doubles в классе Random
Примечание о реализации:
Этот метод реализован так, чтобы быть эквивалентным doubles(Long.MAX_VALUE, randomNumberOrigin, randomNumberBound).
Параметры:
randomNumberOrigin - начало (включительно) каждого случайного значения
randomNumberBound - граница (исключительно) каждого случайного значения
Возвращает:
поток псевдослучайных double значений, каждое с заданным началом (включительно) и границей (исключительно)
Исключение:
IllegalArgumentException - если randomNumberOrigin не конечно, или randomNumberBound не конечно, или randomNumberOrigin больше или равно randomNumberBound
С:
1.8

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/concurrent/ThreadLocalRandom.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API