Kur*_*Lin 18 java java-memory-model order-of-execution
根据Java Memory Model,只要执行结构良好,指令就可以重新排序.
所以我想知道,以下代码是否可能产生以下输出?
[代码] [在同一个主题中]
long a = System.currentTimeMillis();
long b = System.currentTimeMillis();
long c = System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)
[输出]
a == 10, b == 20, c == 15
Run Code Online (Sandbox Code Playgroud)
如果不可能,那么JVM /实现会做些什么来防止这种情况发生?
请参阅此问题指令重新排序和发生在java之前的关系.
我相信,除非您处于不同的线程中,否则任何执行的结果将始终与代码中的顺序一致.在这种情况下,由于无法按顺序处理它,即使您的字段对另一个线程可见,它也应该是好的.