JMM

cup乱序执行-》重排序-》可见性问题
使用内存屏障解决
cup层面内存屏障 :store barrier、 load barrier 、full barrier

一:JMM内存模型 ->语言级别抽象的内存模型{

volatile(语言级别的内存屏障实现可见性———执行时加了一个lock指令)、
syschronized(同步锁实现可见性)、
final(防止重排序实现可见性-final只能在构造方法里修改,而在构造方法中不能重排序)、
happens-before
}

原代码-编译重排序-cup重排序-执行最终指令

产生可见性问题根本原因:高速缓存、重排序(CUP指令优化)

JMM最核心价值:解决了有序性、可见性

小结:

编译器级别(语言级别的内存屏障)/cpu级别(Cup级别的内存屏障)
Cup级别的内存屏障:读、写、全
语言级别的内存屏障:loadload loadStore storeLoad storeStore
通过语言屏障控制有序性和可见性

二:happens-before原则

可见性保障 -> volatile外的方法
happens-before

会建立happens-before原则的八大规则

1.单线程中程序顺序运行规则	
2.volatile规则,增加语言级别内存屏障	
3.传递性规则	
4.start规则
5.join规则	
6.监视器锁规则(前一个锁释放后,后一个锁才能开始使用
7.8
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值