• 技术文章 >java >java基础

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

    小妮浅浅小妮浅浅2021-06-17 09:50:59原创2532

    说明

    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电脑。

    专题推荐:java volatile
    上一篇:java volatile变量的并发操作 下一篇:java中volatile变量的原理

    相关文章推荐

    • java与c语言区别• java和c 哪个好• 新手学c还是java• java中CAS的底层原理• java注解的本质分析• java元注解是什么• java中NIO是什么• java中Buffer是什么• java Channel是什么• java中jstack是什么• java使用JConsole检测死锁

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网