前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【说站】volatile在java禁止指令重排的分析

【说站】volatile在java禁止指令重排的分析

作者头像
很酷的站长
发布2022-11-23 13:00:16
2290
发布2022-11-23 13:00:16
举报
文章被收录于专栏:站长的编程笔记

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

说明

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

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

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

实例

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

以上就是volatile在java禁止指令重排的分析,希望对大家有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • volatile在java禁止指令重排的分析
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档