开发者社区> 问答> 正文

[@小川游鱼][¥20]volatile 修饰符的有过什么实践?

问题来自Java技术沙龙的李博
Java线下沙龙报名链接:https://yq.aliyun.com/activity/796

展开
收起
李博 bluemind 2018-12-13 10:37:45 1915 0
1 条回答
写回答
取消 提交回答
  • 1.阿里云大学讲师,主讲《微服务Spring Cloud设计与开发实战》《MongoDB高级实战》等课程 2.MongoDB中文社区专家 3.《MongoDB实战》第2版译者 5.吉林大学计算机科学学士、上海交通大学硕士

    volatile没有线程互斥,但是提供最新修改变量的可见性和有序性问题的方案。:
    对volatile变量的单次读/写操作可以保证原子性的,如long和double类型变量,
    但是并不能保证i++这种操作的原子性,因为本质上i++是读、写两次操作。
    volatile定义的变量,CPU修改变量以后立即写回内存,底层指令连续出现:
    所以,使用volatile变量能够保证单次操作的原子性:
    每次读取前必须先从主内存刷新最新的值。
    每次写入后必须立即同步回主内存当中。
    也就是说,volatile关键字修饰的变量是尽可能的最新值。

    2019-07-17 23:20:22
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载