Java中的volatile关键字详解
2021-02-19 06:17
标签:ati 包含 code 顺序 观察 这一 带来 volatil 结果 当一个变量被volatile修饰时,会拥有两个特性: JMM操作变量的时候不是直接在主存进行操作的,而是每个线程拥有自己的工作内存,在使用前,将该变量的值copy一份到自己的工作内存,读取时直接读取自己的工作内存中的值.写入操作时,先将修改后的值写入到自己的工作内存,再讲工作内存中的值刷新回主存。 JVM在不影响单线程执行结果的情况下回对指令进行重排序,比如: 上述代码中,(3)执行依赖于(1)(2)的执行,但是(1)(2)的执行顺序并不影响结果,也就是说当我们进行了上述的编码,JVM真正执行的可能是(1)(2)(3),也可能是(2)(1)(3). 这在单线程中是无所谓的,还会带来性能的提升。 使用volatile修饰的变量最好满足以下条件: 这里举几个比较经典的场景: Java中的volatile关键字详解 标签:ati 包含 code 顺序 观察 这一 带来 volatil 结果 原文地址:https://www.cnblogs.com/songgj/p/14407465.htmlvolatile的作用及原理
1. 保证内存可见性
2.禁止指令重排序
int i = 1;//(1)
int j = 2;//(2)
int h = i * j;//(3)
volatile的使用场景
文章标题:Java中的volatile关键字详解
文章链接:http://soscw.com/index.php/essay/57394.html