根据Java内存模型,只要执行是良好形式的,指令可以被重新排序。
因此我想知道,以下代码是否可能产生以下输出结果?
[在同一线程中的代码]
long a = System.currentTimeMillis();
long b = System.currentTimeMillis();
long c = System.currentTimeMillis();
[输出]
a == 10, b == 20, c == 15
如果不可能的话,那么JVM / 实现会采取什么措施来防止这种情况发生?