В соответствии с моделью памяти Java инструкции могут быть переупорядочены до тех пор, пока выполняется well-formed.Является ли переупорядочение Java влияющим на System.currentTimeMillis()?
Так что, интересно, возможно ли, что следующие коды выдают следующий результат?
[коды] [в том же потоке]
long a = System.currentTimeMillis();
long b = System.currentTimeMillis();
long c = System.currentTimeMillis();
[выход]
a == 10, b == 20, c == 15
Если не возможно, то, что делает JVM/реализаций сделать, чтобы предотвратить это ?
Если вы не запустите это в системе с установленными часами, очень близкими к 1 января 1970 года, вы, вероятно, не получите этих точных значений. Почему JVM переупорядочивает эти инструкции? –
@ElliottFrisch привет. Эти точные значения используются для иллюстрации того, что a, b и c не могут монотонно возрастать; не должно быть 10, 20 и 15 :-P –
@ElliottFrisch Что я здесь делаю, есть ли гарантия того, что эти 3 System.currentTimeMillis() не будут переупорядочены JVM? –