In base al modello di memoria Java, è possibile riordinare le istruzioni purché l'esecuzione sia well-formed.Il riordino Java influisce su System.currentTimeMillis()?
Quindi mi chiedo, è possibile che i seguenti codici producano il seguente output?
[codici] [in uno stesso filo]
long a = System.currentTimeMillis();
long b = System.currentTimeMillis();
long c = System.currentTimeMillis();
[uscita]
a == 10, b == 20, c == 15
Se non è possibile, allora ciò fa JVM/implementazioni fanno per evitare che ciò accada ?
A meno che non si esegua questo su un sistema con l'orologio impostato molto vicino al 1 gennaio 1970, probabilmente non si otterranno quei valori esatti. Perché la JVM dovrebbe riordinare queste istruzioni? –
@ElliottFrisch ciao. Questi valori esatti vengono usati per illustrare che a, b e c potrebbero non aumentare in modo monotono; non deve essere il 10, il 20 e il 15 :-P –
@ElliottFrisch Ciò che mi interessa qui è la garanzia che questi 3 System.currentTimeMillis() non vengano riordinati dalla JVM? –