volatile在java禁止指令重排的分析

2026-01-29 0 20,483

说明

1、程序执行到volatile变量的阅读操作或写作操作时,必须进行前一个操作的所有变化。后一个操作已经看到后一个操作还没有进行。

2、指令优化时,不能将volatile变量访问的句子放在后面,也不能将volatile变量访问的句子放在前面。

一般的变量只能保证该方法在执行过程中所有依赖授权结果的地方都能得到正确的结果,不能保证其顺序与程序代码的执行顺序一致。

实例

volatile boolean initialized = false;
 
// 下面代码线程A中执行
// 读取配置信息,当读取完成后将initialized设置为true以通知其他线程配置可用
doSomethingReadConfg();
initialized = true;
 
// 下面代码线程B中执行
// 等待initialized 为true,代表线程A已经把配置信息初始化完成
while (!initialized) {
     sleep();
}
// 使用线程A初始化好的配置信息
doSomethingWithConfig();

以上就是volatile在java禁止指令重排的分析,希望对大家有所帮助。更多Java学习指路:Java基础

本教程操作环境:windows7系统、java10版,DELL G3电脑。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:以上部本文内容由互联网用户自发贡献,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。投诉邮箱:3758217903@qq.com

ZhiUp资源网 java教程 volatile在java禁止指令重排的分析 https://www.zhiup.top/10805.html

相关