在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类时,也需要根据实际需要选择合适的随机数生成方法。