今天阅读"深入理解java虚拟机"时,P333,关于happens-before解释,有这么一段:
引用
"时间上顺序与先行发生原则之间基本没有太大关系,所以我们衡量并发安全问题的时候不要受时间顺序的干扰,一切必须以先行发生原则为准。"
这段话我有疑问:指令重排序会破坏happens-before原则吗?happens-before的程序次序原则说:在一个线程内,按照程序代码顺序,书写在前面的操作会先行发生于书写在后面的操作。
如果线程内出现指令重排序,那不是破坏了程序次序原则了吗?是不是需要使用violate才能重新构建内存屏障呢?