在Java 7及以后的版本中,引入了一個新的線程安全的偽隨機數(shù)生成器ThreadLocalRandom,它是java.util.Random類的變體,通過ThreadLocal機制保證了線程安全性,可以用于多線程環(huán)境下的隨機數(shù)生成。
ThreadLocalRandom類中定義了許多靜態(tài)方法,可以用來生成不同類型的隨機數(shù),例如:
nextInt(int n):生成一個0(含)到指定數(shù)值n(不含)之間的隨機整數(shù)。
nextLong(long n):生成一個0(含)到指定數(shù)值n(不含)之間的隨機長整數(shù)。
nextDouble():生成一個0(含)到1.0(不含)之間的隨機雙精度浮點數(shù)。
nextBoolean():生成一個隨機的布爾值。
ThreadLocalRandom類的使用示例:
import java.util.concurrent.ThreadLocalRandom;
public class ThreadLocalRandomExample {
public static void main(String[] args) {
// 生成一個0~10之間的隨機整數(shù)
int randomInt = ThreadLocalRandom.current().nextInt(10);
System.out.println("Random integer: " + randomInt);
// 生成一個0~1之間的隨機雙精度浮點數(shù)
double randomDouble = ThreadLocalRandom.current().nextDouble();
System.out.println("Random double: " + randomDouble);
// 生成一個true或false的隨機布爾值
boolean randomBoolean = ThreadLocalRandom.current().nextBoolean();
System.out.println("Random boolean: " + randomBoolean);
}
}
需要注意的是,ThreadLocalRandom類的使用應該盡量避免在單線程環(huán)境下使用,因為它比java.util.Random類要慢得多,只有在多線程環(huán)境下才能發(fā)揮其優(yōu)勢。此外,在使用ThreadLocalRandom類時,也需要根據(jù)實際需要選擇合適的隨機數(shù)生成方法。