ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/SplittableRandom.java
(Generate patch)

Comparing jsr166/src/main/java/util/SplittableRandom.java (file contents):
Revision 1.31 by jsr166, Fri Feb 19 03:39:15 2016 UTC vs.
Revision 1.32 by jsr166, Sat Feb 20 23:24:57 2016 UTC

# Line 219 | Line 219 | public final class SplittableRandom {
219          return seed += gamma;
220      }
221  
222 +    // IllegalArgumentException messages
223 +    static final String BAD_BOUND = "bound must be positive";
224 +    static final String BAD_RANGE = "bound must be greater than origin";
225 +    static final String BAD_SIZE  = "size must be non-negative";
226 +
227      /**
228       * The seed generator for default constructors.
229       */
230 <    private static final AtomicLong defaultGen = new AtomicLong(initialSeed());
230 >    private static final AtomicLong defaultGen
231 >        = new AtomicLong(mix64(System.currentTimeMillis()) ^
232 >                         mix64(System.nanoTime()));
233  
234 <    private static long initialSeed() {
234 >    // at end of <clinit> to survive static initialization circularity
235 >    static {
236          if (java.security.AccessController.doPrivileged(
237              new java.security.PrivilegedAction<Boolean>() {
238                  public Boolean run() {
# Line 234 | Line 242 | public final class SplittableRandom {
242              long s = (long)seedBytes[0] & 0xffL;
243              for (int i = 1; i < 8; ++i)
244                  s = (s << 8) | ((long)seedBytes[i] & 0xffL);
245 <            return s;
245 >            defaultGen.set(s);
246          }
239        return (mix64(System.currentTimeMillis()) ^
240                mix64(System.nanoTime()));
247      }
248  
243    // IllegalArgumentException messages
244    static final String BAD_BOUND = "bound must be positive";
245    static final String BAD_RANGE = "bound must be greater than origin";
246    static final String BAD_SIZE  = "size must be non-negative";
247
249      /*
250       * Internal versions of nextX methods used by streams, as well as
251       * the public nextX(origin, bound) methods.  These exist mainly to

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines