It seems to me that if two threads call this Math.random() at the same time then two instances of Random() can be constructed. That contradicts the specification of the method, and is theoretically observable because the two values from Math.random() will typically not be a pair of values that could have been returned from consecutive calls to nextDouble() on a single Random instance. Granted, the chances of this actually mattering are infinitesimal, but I think the performance gain of avoiding a synchronized method only on the very first call to Math.random() is infinitesimal too. So I'd be inclined to leave well enough alone here.
Eamonn

Martin Buchholz wrote:
Here's an optimization for Math.random() that appears to be safe,
despite the double-check access:

http://cr.openjdk.java.net/~martin/webrevs/openjdk7/Math.random/

David, if you agree, could you file a bug?

Thanks,

Martin

Reply via email to