jdk/src/java.base/share/classes/java/util/concurrent/ThreadLocalRandom.java
changeset 36015 c263d0e3b073
parent 35981 e3e89c0bb3d9
child 36232 7a020ad42ac0
equal deleted inserted replaced
36014:3d50784f2dc2 36015:c263d0e3b073
   132      * The next seed for default constructors.
   132      * The next seed for default constructors.
   133      */
   133      */
   134     private static final AtomicLong seeder = new AtomicLong(initialSeed());
   134     private static final AtomicLong seeder = new AtomicLong(initialSeed());
   135 
   135 
   136     private static long initialSeed() {
   136     private static long initialSeed() {
   137         java.security.PrivilegedAction<Boolean> action =
   137         if (java.security.AccessController.doPrivileged(
   138             () -> Boolean.getBoolean("java.util.secureRandomSeed");
   138             new java.security.PrivilegedAction<Boolean>() {
   139         if (java.security.AccessController.doPrivileged(action)) {
   139                 public Boolean run() {
       
   140                     return Boolean.getBoolean("java.util.secureRandomSeed");
       
   141                 }})) {
   140             byte[] seedBytes = java.security.SecureRandom.getSeed(8);
   142             byte[] seedBytes = java.security.SecureRandom.getSeed(8);
   141             long s = (long)seedBytes[0] & 0xffL;
   143             long s = (long)seedBytes[0] & 0xffL;
   142             for (int i = 1; i < 8; ++i)
   144             for (int i = 1; i < 8; ++i)
   143                 s = (s << 8) | ((long)seedBytes[i] & 0xffL);
   145                 s = (s << 8) | ((long)seedBytes[i] & 0xffL);
   144             return s;
   146             return s;