我想创建一个对象的很多实例,它使用随机数作为初始化的一部分,但是如果我在循环中创建了大量的这些对象,那么它们中的大多数将是相同的(我认为) 。有人可以澄清吗?如果我的假设正确,是否有办法让他们共享一个Random对象?
答案 0 :(得分:2)
您的对象可以共享一个java.util.Random
实例。实际上,与每次创建Random
的新实例相比,这将为您提供最佳性能。
如果您正在处理多个线程,即使java.util.Random
是线程安全的,您也应该考虑使用JDK 1.7中引入的ThreadLocalRandom
,因为它会显着减少线程争用。
例如:
public class ExampleClass {
private static final Random random = new Random();
public ExampleClass() {
System.out.println("Constructor using random: " + random.nextInt(100));
}
public void methodThatUsesRandom() {
System.out.println("Method using random: " + random.nextInt(100));
}
}