java多线程之volatile内存可见性

操作系统的内存大致可以看成主存(内存条上的内存),cpu的缓存。当多个核心访问主存中的变量时,需要把主存中的值拷贝的每个核心的cpu缓存上,每个核心的缓存之间互相是不可见的,当修改的时候需要把值刷新到主存上其他的线程才看的到,在底层其实还有更多的操作,我只是简单的说了一下。

JVM已经帮我们封装了很多操作,但还不够所有有了 volatile 这个关键词,可以保持变量的可见性

使用同步锁的方法来操作变量也是保持内存可见性的,因为在一个线程操作变量时其他线程都在等待池等待,只有这个操作完成了,其他线程才可以访问,同步锁即保证了可见性,也保证了原子性,也保证了线程安全

注意: volatile只是保证了内存可见性,并没有保证原子性和线程安全性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值