Глядя на исходный код, соответствующий код для Math.random()
определяется как:
private static Random randomNumberGenerator;
private static synchronized void initRNG() {
if (randomNumberGenerator == null)
randomNumberGenerator = new Random();
}
public static double random() {
if (randomNumberGenerator == null) initRNG();
return randomNumberGenerator.nextDouble();
}
Таким образом, поскольку randomNumberGenerator
является переменной static
, после того, как она инициализируется (первый вызов Math.random()
) путем вызова ее любым классом в JVM, она остается там (если класс не является больше не требуется и не загружен.