在对象的实例之间随机共享?

时间:2016-04-23 19:52:08

标签: java random

我想创建一个对象的很多实例,它使用随机数作为初始化的一部分,但是如果我在循环中创建了大量的这些对象,那么它们中的大多数将是相同的(我认为) 。有人可以澄清吗?如果我的假设正确,是否有办法让他们共享一个Random对象?

1 个答案:

答案 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));
    }
}