可不可以这样理解:
"int j = 2"的代码完全可能先被处理器执行,这并不影响先行先发生原则,因为我们在这条线程中没有办法感知到这点。(都是赋值操作,无论先发生哪一个,最终结果都与顺序执行一样)。
但如果有其他线程在读取这两个值,指令重排序就会造成读取错误!