• 技术文章 >java >java基础

    java中volatile变量的原理

    小妮浅浅小妮浅浅2021-04-02 15:49:55原创3397

    1、用处

    一个线程负责更新变量,其它线程只读取变量(不更新),并根据新的变量值执行相应的逻辑。比如状态标记位置更新,观察模型变量值发布。

    2、原理

    在volatile写作操作之前插入StoreStore屏障。该屏障不仅保证了屏障前的写作操作和屏障后的写作操作不能重新排序,还保证了volatile写作操作前,任何读写操作都比volatile提交。

    在volatile写作操作后面插入StoreLoad屏障。该屏障不仅不会重新排序volatile写作操作和后续的阅读操作,还会更新处理器的缓存,使volatile变量的写作更新能够看到其他线程。

    在volatile读取操作后面插入LoadLoad屏障。该屏障不仅不会使volatile的阅读操作和之前的写作操作重新排名,还会更新处理器的缓存,使volatile的变量阅读成为最新值。

    在volatile阅读操作的后面插入LoadStore屏障。该屏障不仅禁止volatile浏览操作,还禁止后续任何写作操作重新排序,更新处理器缓存,更新其他线程volatile变量的写作,可以看到volatile浏览操作的线程。

    以上就是java中volatile变量的原理,希望对大家有所帮助。更多Java学习指路:Java基础

    专题推荐:java volatile
    上一篇:volatile在java禁止指令重排的分析 下一篇:java内部类的访问

    相关文章推荐

    • java和c 哪个好• 新手学c还是java• java中CAS的底层原理• java注解的本质分析• java元注解是什么• java中NIO是什么• java中Buffer是什么• java Channel是什么• java中jstack是什么• java使用JConsole检测死锁• java线程池死锁的产生及处理

    全部评论我要评论

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

  • 取消发布评论
  • 

    Python学习网