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

0
3
Jimin
回复
慕神8359304
嗯,都是和内存屏障有关系
2019-02-22
共3条回复

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程