并发线程中成员变量的可见性原理 volatile MESI缓存缓存一致性

本文探讨了Java中volatile关键字的作用,它如何确保线程间的可见性。通过store和write操作,volatile保证了数据修改后立即写回主内存,并通过总线嗅探机制通知其他线程刷新副本,防止数据不一致。这种机制对于多线程环境中的共享变量至关重要。
摘要由CSDN通过智能技术生成

 

 

 

通过read 把变量读到一块临时区域(操作数栈)操作数栈的东西是没有存下来的,通过load载入到变量副本,实际上是到局部变量表存下来了,再通过use命令去使用它,通过assign赋值

因为数据在临时区,一个线程改变了这个值另一个线程并不会知道.

加了volatile后 会增加一条总线,当数据改变之后通过store、write写回主内存过程中,总线会监听到这个值发生改变,会通知其他线程把副本中的数据删掉,要使用这个数据时重新从主内存中拿。

 

写回主内存(堆)去了(锁住去写)有嗅探机制,发现改变了就会把其他线程中的副本给删掉

实现成员变量在线程间的可见性

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值