JMM一致性协议

JMM中一些普通变量的操作指令

A、Load操作发生在read之后(两个之间可以有其他的指令)
B、普通变量的修改未必会立即发生Store操作,但发生Store操作,就会发生write操作

clipboard.png

最细的粒度支持,也就是对Load、Store的各种顺序控制,load、store两两组合为4中情况,LoadLoad、StoreStore、LoadStore、StoreLoad。它们以一种指令屏障的方式来控制顺序。有些系统可能不支持某些指令的顺序化,不过,绝大多数系统都支持StoreLoad指令。

StoreLoad的意思

可以简单理解为Store优先于Load发生。例如两个在某个瞬间同时修改和读取主存中的一个共享变量,此时的读取操作将发生在修改之后。有了这样一个特征,就实现了最细粒度的锁,也是最轻量级的锁。

不过这样的方式能保证读的一瞬间确保线程读取到最新的数据,因此要进一步做到读取、修改、写入动作是一致的,就将其升级为原子性。要达到原子性的效果,可以通过可见性、CAS自旋来完成,也可以通过synchronized来完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值