问题

在多个线程之间共享Randomclass的一个实例是否有效?并且特别从多个线程调用nextInt(int)


#1 热门回答(60 赞)

它是线程安全的,在多线程使用时它仍然会生成随机数。

Sun / Oracle JVM实现使用synchronized和AtomicLong作为种子来提高跨线程的一致性。但它似乎并未在文档中的所有平台上得到保证。

我不会写你的程序来要求这样的保证,特别是因为你无法确定nextInt()将被调用的顺序。


#2 热门回答(21 赞)

它是线程安全的,虽然并非总是如此。

有关更多详细信息,请参见http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6362070


#3 热门回答(8 赞)

根据文档,Math.random()保证多线程使用它是安全的。但是Random类没有。我会假设你必须自己同步。


原文链接