volatile在的可见性是由什么保证的?是内存屏障吗?
来源:3-5 线程安全性-有序性与总结
慕神8359304
2019-02-21
1.volatile变量在的可见性是由什么保证的?是内存屏障吗?
2使用volatile变量为什么能禁止重排序,也是因为内存屏障?
写回答
1回答
-
Jimin
2019-02-21
你好,volatile属于java关键字,他的特性是由JVM来保证的。JVM来将volatile编译成cpu指令执行时,会引入内存屏障,来保证读取相关的变量强制从主内存获取到的最新的值。深入理解java虚拟机一书中有介绍 指令重排序不能越过内存屏障,但这不一定是根本的因果原因。具体可以参考这篇回答:https://segmentfault.com/q/1010000006767915
032019-02-22
相似问题