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