volatile关键字的作用以及底层原理分析

volatile关键字的作用以及原理分析

通俗地讲volatile修饰的变量意味着,对变量的地址进行稳定的访问

1,不稳定的访问是什么

Cpu为了工作的高速,很多时候访问数据都不是去内存里面拿的,更多是将数据放在缓存中,然后下一次又要用到这些数据的时候就可以直接从高速缓存内拿到,这就意味着某些数据可能会出现不一致的问题,也就是如果内存中数据早已改变,但是缓存里面还是存着以前的存的数据。
这就是要用volatile的原因所在了,那就是对于关键的数据,我们想要最可靠的方式去得到他,而不是拿到一个可能过期的数据。

2什么是volatile提供的稳定的访问呢,以下将从底层微机的角度去分析

系统对volatile变量进行操作的时候JVM想处理器发送一条带lock前缀的指令,处理器在接受到lock指令时,会立马将缓存中的数据写回到内存中,并且这个操作过程会采用缓存一致性原则,也叫缓存锁定,来保证修改过程的原子性,他会禁止同时操作两个以上的缓存对应的内存区域的数据。
数据写回之后,其他的处理器里面的缓存这个时候还没有变,但是各个处理器会一直在系统总线上嗅探数据,一旦发现自己的缓存行对应的内存地址被修改,就会把处理器的缓存行设置为,无效状态,当处理器又访问到无效状态的缓存时,会被强制要求从对应的内存中拿最新的数据

以上就是volatile的一个原理分析了

实习冲刺95天,一只鹅留
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值