在一些.net文档中,我已经读过这是编译器处理volatile的方法:
这些围栏适用于编译器和架构级别。
当然,VC ++的主要区别在于围栏仅适用于编译器级别。
所以我的问题是,Java中volatile的内存重排序预防语义是什么?
转换:
围栏=障碍 障碍=围栏
参考文献:
Joe Duffy(Windows上的并发编程)
答案 0 :(得分:1)
在Java中,javac
编译器与volatile几乎没有任何关系。它没有重新排序语句,几乎没有优化。
另一方面,JIT可以进行相当多的优化和重新排序。
volatile
的重要功能是;