Removing a layer of synchronization on Math.random

Doug Lea dl at cs.oswego.edu
Sat Jun 5 12:07:56 UTC 2010


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

It is just barely safe because of Random internals that preclude
reordering of the field ref assignment. It would be nicer
(and no slower) to put a Fences.orderWrites() here.
Assuming we add Fences API for Java7.
http://gee.cs.oswego.edu/dl/jsr166/dist/docs/java/util/concurrent/atomic/Fences.html

In the mean time, it would be good to include a more careful
explanation in the comments so people don't blindly copy/paste/hack
this construction when it doesn't apply.

Greetings from Toronto (ISMM/PLDI)

-Doug

> http://cr.openjdk.java.net/~martin/webrevs/openjdk7/Math.random/
>
> David, if you agree, could you file a bug?
>
> Thanks,
>
> Martin
>





More information about the core-libs-dev mailing list