java的内存模型



Java的内存模型

一、模型展示图

本地内存:

①其实是抽象的、不存在的,但是主内存是存在的。本地内存是主内存的副本。




二、volatile和synchronized的内存语义

java的内存屏壁的作用:

①保证内存的可见性
②禁止重排序,遵循happen-before语义


被volatile修饰的变量,在使用的过程中都是会直接读取主内存的值,而实现这个的就是这个内存屏壁发挥的作用,但是保证不了原子性。从内存中读取数据和将数据刷新到主内存中的load/read/store/write这四步是保证不了原子性的。

synchronized修饰的方法或者代码块= 内存可见+原子性。


volatile的使用条件:

 ①对变量的写操作不依赖当前值            如:a++;
②该变量不能存在于其他变量的不变式中     如:int b=a+1;

最实在的使用场景:
①作为一次性事件、终结条件;涉及的单方面修改
②读--写锁分离策略。读用volatile、写用对象锁。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值