volatile变量的第二个语义是禁止指令重 排序优化

特别是在 多个CPU的情况下, 并发的时候, 应该优先考虑使用 volatile 关键字。 可以让 程序 按照 代码的 的先后顺序执行。否则可能 后写的代码 先执行。 因为 JVM 会可能会对 代码 的执行进行 重排序,重排序是为了提高程序执行的效率。 可是在并发的时候,就容易出现 一下 问题了。

使用volatile变量的第二个语义是禁止指令重 排序优化, 普通的变量仅仅会保证在该方法的执 行过程中所有依赖赋值结果的地方都能获取到正 确的结果, 而不能保证变量赋值操作的顺序与程序代码中的执行顺序一致。 因为在一个线程的方 法执行过程中无法感知到这点, 这也就是Java内 存模型中描述的所谓的“线程内表现为串行的语 义”(Within-Thread As-If-Serial Semantics) 。

《深入理解JVM虚拟机》

转载于:https://my.oschina.net/ouminzy/blog/1803151

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值