volatile和原子操作

本文深入解析volatile关键字在Java并发编程中的作用,重点阐述了它如何保证变量的原子性和可视性,同时指出它对于操作如++、--等的限制,并提供了详细的应用场景和案例分析。

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

volatile 可以保证变量的原子性和可视性。。 但不能保证原子操作,如++,-- 等均不是原子操作。 如需操作请使用synchronized关键字 或 Lock锁。

 

原子操作为,变量的取值和赋值。

 

volatile 保证的是long和double的原子性,因为这两个变量为64位,在JVM 中处理时看做32位,所以在并发时变量需要加上volatile修饰,保证在赋值等处理时,不会发生数据断开的情况。

 

当并发的共享变量需要返回,或者在多处引用时,需要注意该共享变量的可视性,保证取得的是内存中的最新值, 加入volatile修饰即可。

 

http://xiabin1235910-qq-com.iteye.com/admin/blogs/1571669 详细讲解了 volatile的使用及注意事项。非常有用,详细了解。

 

在windows核心编程一书中,用户模式下的线程同步这一章,206页  也提到volatile的使用。

保证变量每一次都从内存中取得最新值,而不是在编译器优化后,重复取得cpu寄存器的值。

 

详见 java编程思想并发一章的原子性与可视性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值