On Sun, 20 Feb 2022 06:39:26 GMT, liach <d...@openjdk.java.net> wrote:
>> Yasser Bazzi has updated the pull request incrementally with one additional >> commit since the last revision: >> >> remove missed whitespace > > src/java.base/share/classes/java/util/Random.java line 95: > >> 93: private static class RandomWrapper extends Random implements >> RandomGenerator { >> 94: private final RandomGenerator generator; >> 95: private final boolean initialized; > > Can we create a private or package-private constructor for `Random` for this > subclass' constructor to call? The no-arg constructor has some unnecessary > calculations, and the `long` constructor calls `setSeed`. A special `Random` > constructor for this subclass allows removing this special logic (by not > calling `setSeed` at all) and avoid redundant seed initialization. More specifically, in Random class, declare // special constructor for RandomWrapper to call private Random(Void unused) { this.seed = new AtomicLong(); } So the randomwrapper can be (with `initialized` field removed): private RandomWrapper(RandomGenerator randomToWrap) { super(null); this.generator = randomToWrap; } @Override public void setSeed(long seed) { throw new UnsupportedOperationException(); } Currently, the RandomWrapper constructor calls the no-arg super constructor implicitly, which has some overheads for unnecessary calculations. ------------- PR: https://git.openjdk.java.net/jdk/pull/7001