Code Review 7051516: ThreadLocalRandom seed is never initialized so all instances generate the same sequence
Mike Duigou
mike.duigou at oracle.com
Thu Jun 16 16:32:49 UTC 2011
Hi Chris;
The getClass() seems unnecessary. Why not :
public Random(long seed) {
this.seed = new AtomicLong();
setSeed(seed);
}
or
private final AtomicLong seed = new AtomicLong();
public Random(long seed) {
setSeed(seed);
}
Both of these would seem to have the same effect without needing to do the explicit class check.
Mike
On Jun 16 2011, at 03:18 , Chris Hegarty wrote:
> Hi,
>
> ThreadLocalRandom uses its own seed, not the seed of the super class.
>
> ThreadLocalRandom() {
> super();
> initialized = true;
> }
>
> This uselessly initializes the parent seed via the default constructor but leaves the real seed at zero.
>
> Webrev:
> http://cr.openjdk.java.net/~chegar/7051516/jdk8_webrev.00/webrev/
>
> Note:
> This is a port of the fix from Doug's CVS to OpenJDK. A test has been added to Doug's CVS tck tests for ThreadLocalRandom, and I will file a CR against the JCK to have it pulled in to JCK8.
>
> -Chris.
More information about the core-libs-dev
mailing list