mirror of
https://github.com/openjdk/jdk.git
synced 2026-04-09 06:28:49 +00:00
6959259: Minor improvements to static Random field caching
Cache fields in locals; small javadoc clarifications Reviewed-by: emcmanus, dholmes, forax, dl
This commit is contained in:
parent
e267adc80a
commit
d6dea71e06
@ -681,9 +681,9 @@ public final class Math {
|
||||
|
||||
private static Random randomNumberGenerator;
|
||||
|
||||
private static synchronized void initRNG() {
|
||||
if (randomNumberGenerator == null)
|
||||
randomNumberGenerator = new Random();
|
||||
private static synchronized Random initRNG() {
|
||||
Random rnd = randomNumberGenerator;
|
||||
return (rnd == null) ? (randomNumberGenerator = new Random()) : rnd;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -694,9 +694,11 @@ public final class Math {
|
||||
*
|
||||
* <p>When this method is first called, it creates a single new
|
||||
* pseudorandom-number generator, exactly as if by the expression
|
||||
* <blockquote>{@code new java.util.Random}</blockquote> This
|
||||
* new pseudorandom-number generator is used thereafter for all
|
||||
* calls to this method and is used nowhere else.
|
||||
*
|
||||
* <blockquote>{@code new java.util.Random()}</blockquote>
|
||||
*
|
||||
* This new pseudorandom-number generator is used thereafter for
|
||||
* all calls to this method and is used nowhere else.
|
||||
*
|
||||
* <p>This method is properly synchronized to allow correct use by
|
||||
* more than one thread. However, if many threads need to generate
|
||||
@ -705,11 +707,12 @@ public final class Math {
|
||||
*
|
||||
* @return a pseudorandom {@code double} greater than or equal
|
||||
* to {@code 0.0} and less than {@code 1.0}.
|
||||
* @see java.util.Random#nextDouble()
|
||||
* @see Random#nextDouble()
|
||||
*/
|
||||
public static double random() {
|
||||
if (randomNumberGenerator == null) initRNG();
|
||||
return randomNumberGenerator.nextDouble();
|
||||
Random rnd = randomNumberGenerator;
|
||||
if (rnd == null) rnd = initRNG();
|
||||
return rnd.nextDouble();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -667,9 +667,9 @@ public final class StrictMath {
|
||||
|
||||
private static Random randomNumberGenerator;
|
||||
|
||||
private static synchronized void initRNG() {
|
||||
if (randomNumberGenerator == null)
|
||||
randomNumberGenerator = new Random();
|
||||
private static synchronized Random initRNG() {
|
||||
Random rnd = randomNumberGenerator;
|
||||
return (rnd == null) ? (randomNumberGenerator = new Random()) : rnd;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -680,9 +680,11 @@ public final class StrictMath {
|
||||
*
|
||||
* <p>When this method is first called, it creates a single new
|
||||
* pseudorandom-number generator, exactly as if by the expression
|
||||
* <blockquote>{@code new java.util.Random}</blockquote> This
|
||||
* new pseudorandom-number generator is used thereafter for all
|
||||
* calls to this method and is used nowhere else.
|
||||
*
|
||||
* <blockquote>{@code new java.util.Random()}</blockquote>
|
||||
*
|
||||
* This new pseudorandom-number generator is used thereafter for
|
||||
* all calls to this method and is used nowhere else.
|
||||
*
|
||||
* <p>This method is properly synchronized to allow correct use by
|
||||
* more than one thread. However, if many threads need to generate
|
||||
@ -691,11 +693,12 @@ public final class StrictMath {
|
||||
*
|
||||
* @return a pseudorandom {@code double} greater than or equal
|
||||
* to {@code 0.0} and less than {@code 1.0}.
|
||||
* @see java.util.Random#nextDouble()
|
||||
* @see Random#nextDouble()
|
||||
*/
|
||||
public static double random() {
|
||||
if (randomNumberGenerator == null) initRNG();
|
||||
return randomNumberGenerator.nextDouble();
|
||||
Random rnd = randomNumberGenerator;
|
||||
if (rnd == null) rnd = initRNG();
|
||||
return rnd.nextDouble();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -463,10 +463,10 @@ public class Collections {
|
||||
* its list-iterator does not support the <tt>set</tt> operation.
|
||||
*/
|
||||
public static void shuffle(List<?> list) {
|
||||
if (r == null) {
|
||||
r = new Random();
|
||||
}
|
||||
shuffle(list, r);
|
||||
Random rnd = r;
|
||||
if (rnd == null)
|
||||
r = rnd = new Random();
|
||||
shuffle(list, rnd);
|
||||
}
|
||||
private static Random r;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user