Volatile解密(volatile在内存中的语义)

  • 在多线程的程序中,如果想要设置一个共享变量的话,volatile 关键字无非是一个好的选择,首先我们先来看看volatile 的作用.

1. volatile的作用:

  • 被volatile修饰的变量值,会保证其操作的可见性,也就是说被修饰的变量会在更改后刷新至主内存中,保证单一线程更改会立刻将主内存中的数据更新.
    (java内存模型==>每个线程会有个工作内存,会将主内存中的数据复制到工作内存中.)

2.volatile的内存语义:

  • 对volatile变量的写操作我们称之为volatile写,这个动作会在指令序列中插入内存屏障对的指令(我们知道 虚拟机操作写操作其实是通过一系列指令进行的),在volatile写操作之前 会插入一个StoreStore屏障,在这之后则会插入一个StoreLoad屏障.

2.1StoreStore指令:

  • 禁止上面的普通写和下面的volatile写重排序.

2.2StoreLoad指令:

  • 防止上面的volatile写与下面的volatile读/写重排序

而在volatile读之前也会插入内存屏障.

2.3 LoadLoad指令:

  • 禁止下面的普通读操作与上面的volatile读重排序.

2.4 LoadStore指令:

  • 禁止下面的普通写操作与上面的volatile读重排序.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那...
    波波波先森阅读 13,914评论 4 56
  • 目录: 1. 指令重排 2. 顺序一致性 3. volatile 4. final 1.指令重排 要了解指令重排,...
    西部小笼包阅读 4,247评论 0 1
  • 如今,严寒终于过去,一场场春雨也带来了回升的气温。这样的季节正是装嫩的好时候,姑娘们赶紧褪下厚重的外套穿起来吧。 ...
    拍范阅读 3,335评论 0 0
  • 数量规律(属性武规律):点、线、角、面、素 A、点 特征:①交叉的线条移 ②相切较多 分类:①直直、曲曲、直曲交...
    琐珥阅读 3,907评论 0 0
  • 大宝嘟嘟现在五岁八个多月,一天早上还没起床,嘟嘟问我:“妈妈,你小时候有没有想过自己长大后会嫁给一个戴眼镜的男生?...
    学习中的宝妈阅读 3,529评论 0 0

友情链接更多精彩内容