volatile修饰的变量_06-volatile(重要)

1,volatile的作用

volatile是一个轻量级的线程同步机制。它的特性之一,是保证了变量在线程之间的可见性。

所谓的可见性是指当一个线程修改了变量的值之后,其他线程可以感知到该变化。

为什么会有可见性问题?

是因为由于硬件速度的不同,CPU的速度要明显快于主内存。

所以为了解决速度不匹配的问题,在CPU到主内存之间就会有多级的缓存。

那么这个时候就会发生,一个线程修改了数据,数据还没有及时刷到主内存,那么其他线程读取到的数据就依然还是旧的,这就是可见性问题发生的根源。

通过给变量设置volatile关键字修饰,可以保证变量在线程修改完之后,会刷新到共享内存,这样其他线程就可以读取到最新的内容

volatile保证了在多个线程之间是可见的,但不能保证原子性操作。

2,volatile vs synchronized

synchronized也是保证了线程的可见性,同时也具备了多线程之间的互斥性

3,如何使用volatile

直接修饰变量即可

private volatile int count;

4,volatile底层实现原理

当变量被声明为volatile后,线程每次都会都从主内存去读取,而不是读取自己的工作内存,这样就实现了线程之间的可见性

9491d83aa898c162a262fe01a292086d.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值