Java 内存屏障 Memory Barrier 及 volatile 关键字

更多 Java 并发编程方面的文章,请参见文集《Java 并发编程》


Java 内存模型如下图所示:


Java 内存模型

内存屏障 Memory Barrier

处于性能优化的目的,编译器和 CPU 可能会对代码及指令进行重排序。


重排序

内存屏障 Memory Barrier 是一个 CPU 指令,先于该命令的先执行,后于该命令的后执行,并强制更新一次 CPU 缓存。

volatile 关键字

线程中每次使用 volatile 变量时,都会首先将变量的值从 主存 同步到线程的 本地内存 中变量的副本。
因此,volatile 关键字保证了变量对线程的可见性,但是不能保证原子性!

实现:
若某个变量被 volatile 关键字修饰

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

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,486评论 11 349
  • 我们一起来讨论讨论java内存模型。理解内存模型对多线程编程无疑是有好处的。 java代码是如何跑起来的 java...
    caixiangwang阅读 3,803评论 0 3
  • 转自:http://www.cnblogs.com/dolphin0520/p/3920373.html vola...
    王帅199207阅读 3,321评论 0 0
  • 刚刚跟最近一个很要好的女生聊天,得知自己相处了三年的大学室友兼自己一直认为大学最好的朋友背后说我的一些话,原来在暗...
    长帽子的眼睛阅读 2,929评论 0 0
  • 每个人都是一扇窗通过他让你看到自己,我喜欢你, 只是喜欢你发自内心的喜欢不在意你所谓的缺点优点只是单纯的喜欢你, ...
    CamelliaXie阅读 3,395评论 2 5

友情链接更多精彩内容