Java 7 : ThreadLocalRandom generating the same random numbers

标签 java random java-7

我正在试用 Java 7 的 ThreadLocalRandom并看到它在多个线程中生成完全相同的随机数。

这是我的代码,其中我创建了 5 个线程,每个线程打印出 5 个随机数:

//5 threads
for(int i = 0; i < 5 ; i++) {
    final Thread thread = new Thread() {
        @Override
        public void run() {
            System.out.print(Thread.currentThread().getName()+":");

            //each thread prints 5 random numbers
            for(int j = 0 ; j < 5; j++) {
                final int random = ThreadLocalRandom.current().nextInt(1,100);
                System.out.print(random + ",");
            }
            System.out.println();
        }
    };
    thread.start();
    thread.join();
}

输出:

Thread-0:1,93,45,75,29,
Thread-1:1,93,45,75,29,
Thread-2:1,93,45,75,29,
Thread-3:1,93,45,75,29,
Thread-4:1,93,45,75,29,

为什么每个线程和程序的每次执行都得到相同的随机数?

最佳答案

似乎有一个关于此问题的 Unresolved 错误。参见 herehere

关于Java 7 : ThreadLocalRandom generating the same random numbers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7139525/

相关文章:

java - 使用 Java 解析类似 CSS 的文件

.net - 使用 RNGCRYPTOSERVICEPROVIDER 生成指定范围内的随机数

c++ - 如何直接获取 rand() 序列中的第 n 个数字而不必调用 rand() n 次?

java - 在迭代期间从 ArrayList 中删除多个项目

java - 包 com.sun.xml.internal.messaging.saaj.soap.dynamic 不存在

java - ArrayIndexOutOfBoundsException 和 IndexOutOfBoundsException 之间的区别?

java - 动态代理 - 创建新代理实例时的类加载器参数

java - Jasper 报告构建中断(无编辑)

matlab - 生成许多​​随机向量与生成单个随机矩阵之间是否存在统计差异

java - 为什么我不能在 Java 中调用添加到匿名类的方法?