vilatile的使用

Volatile:
作用:在cpu多核环境下保证多核之间同一份数据的可见性
1.在有syn锁的情况下不用volatile。syn的对象锁都是同一个所以保证了各线程的可见性。
2.线程安全的不用考虑 因为不涉及到一致性问题
3.不依赖于当前状态的写入。虽然不存在线程安全性问题但是也缺少了syn的可见性保证,所以需要volatile提供可见性保证
4.需要禁止重排序的问题。
比如双重校验锁单例模式 。
在此单例模式的创建对象的过程中:
a.分配对象的内存
b.为此内存初始化变量
c.将此单例的引用指向这块内存
b和c顺序可能会变反 导致短时间内出现对象不为null但是内部变量还是null的情况。

5.变量的状态不需要与其它变量共同参与不变约束
如果与其他变量参与了不变性约束 那么必须用同步策略,既然同步了那么可见性问题就被同步解决了 就不需要volatile了
比如:big变量和small变量 有一个不变性约束就是big一定得比small大 那么所有对这两个变量的读写操作都需要同步 就不需要volatile去保证可见性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值