深入理解volatile

volatile作为并发问题不得不谈的一个关键字,在代码层面简简单单的一个关键字却解决了很大一部分的并发程序问题,我们常常遇到并发问题就会想到使用synchronized和volatile,有时候甚至到了胡乱用的程度,因为我们压根就不知道使用volatile解决的到底是什么问题,要究其根本还是我们对于产生并发问题的核心不了解,所以为了更清楚的知道这些关键字后面所代表的意义,那么就有必要深挖一下这些关键字背后到底做了什么操作,解决了什么问题。

首先这里我们将从volatile解决了哪两个方面的问题,然后我们下面针对这两个方向来逐个击破这些问题的起源以及解决方案,最后又是如何体现在volatile关键字里的。

从全局上来说,并发层面的问题主要包含三个,一是CPU切换指令执行导致的原子性问题,二是CPU缓存导致的可见性问题,三是编译器和操作系统进行指令优化导致的指令重排序问题。在代码层面volatile是针对指令重排序问题和缓存可见性问题的解决方案,下面我们来逐个说明它是如何解决的。

查看全文:

深入理解volatileicon-default.png?t=M276https://xuemingde.com/JavaNotes/JVM/20220407-%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3volatile

本文转自 深入理解volatile - 知乎,如有侵权,请联系删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值