【说站】volatile在java禁止指令重排的分析
2024-10-24
37
volatile在java禁止指令重排的分析
说明
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电脑。
更新于:28天前
赞一波!
相关文章
- 【说站】java方法重载的无效探究
- 【说站】java重载方法的参数设置
- 【说站】java内存溢出的四种情况
- 【说站】java抽象类和接口的区别探究
- 【说站】java多态中成员如何访问
- 【说站】java代码块的执行顺序是什么
- 【说站】java继承的优缺点分析
- 【说站】java动态绑定如何理解?
- 【说站】java静态绑定是什么
- 【说站】java静态和动态绑定的对比
- 【说站】java稀疏数组是什么
- 【说站】java如何检查内存泄漏
- 【说站】java内存泄漏
- 【说站】java方法重载
- 【说站】java内存泄漏的解决方法
- 【说站】java多态的理解
- 【说站】java数据结构
- 【说站】java程序编好了怎么运行
- 【说站】java中不同变量的区别
- 【说站】java程序怎么运行
文章评论
评论问答