请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

volatile在的可见性是由什么保证的?是内存屏障吗?

1.volatile变量在的可见性是由什么保证的?是内存屏障吗?
2使用volatile变量为什么能禁止重排序,也是因为内存屏障?

正在回答 回答被采纳积分+3

1回答

Jimin 2019-02-21 23:40:23

你好,volatile属于java关键字,他的特性是由JVM来保证的。JVM来将volatile编译成cpu指令执行时,会引入内存屏障,来保证读取相关的变量强制从主内存获取到的最新的值。深入理解java虚拟机一书中有介绍 指令重排序不能越过内存屏障,但这不一定是根本的因果原因。具体可以参考这篇回答:https://segmentfault.com/q/1010000006767915

0 回复 有任何疑惑可以回复我~
  • 提问者 慕神8359304 #1
    谢谢老师
    回复 有任何疑惑可以回复我~ 2019-02-22 09:41:00
  • 提问者 慕神8359304 #2
    老师那我可不可以这样理解,volatile的可见性和禁止指令重排都是因为加入了内存屏障
    回复 有任何疑惑可以回复我~ 2019-02-22 09:43:02
  • Jimin 回复 提问者 慕神8359304 #3
    嗯,都是和内存屏障有关系
    回复 有任何疑惑可以回复我~ 2019-02-22 10:29:13
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信