java volatile与锁 个人理解

书上意思:

当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序,volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值!

volatile

  1. volatile 只保证了共享变量在线程间的可见性,当某个线程修改了变量V,在底层计算机中会先将当前值写入内存中且使其他处理器(注意是处理器)中变量V所在地址的缓存行(块)失效,如TLB,L1,L2,L3缓存。

锁既保证了线程的互斥,也拥有与volatile一样的效果

所以volatile被称为轻量级的锁?

以上是本人觉得比较符合理解的。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值