java之volatile

本文探讨了volatile关键字在Java中如何确保线程间数据可见性,以及它如何通过缓存锁定和嗅探技术实现原子性。重点讲解了volatile的原理、优化条件和多核处理器下的内存同步机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        1.字段声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。(volatile误用进行原子性操作)

        2.volatile的原理:volatile变量修饰的共享变量进行写操作时会在汇编代码前加上lock前缀, lock前缀的指令在多核处理器下会引发两件事情:

                将当前处理器缓存行的数据写回到系统内存

                该写回内存的操作会使在其他CPU里缓存了该内存地址的额数据无效

        3.锁定某块内存区域的缓存并回写到内存,并使用缓存一致性机制来确保修改的原子性,此操作被称为“缓存锁定”,缓存一致性机制会阻止同时修改由两个以上处理器缓存的内存区域数据。

        4.。实现缓存一致性协议(嗅探技术)处理器使用嗅探技术保证它的内部缓存、系统内存和其他处理器的缓存的数据在总线上保持一致。

        5优化追加字节

                不能优化条件:

                ·缓存行非64字节宽的处理器

                ·共享变量不会被频繁地写

                加字节的方式在Java 7下可能不生效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值