ABA思考

本文探讨了ABA问题在并发编程中的出现,特别是在乐观锁和volatile关键字使用时的挑战。ABA问题可能导致线程间的同步错误,即使值在读取间被改变并再次改回。为解决此问题,提出了两种策略:一是引入版本号或时间戳来检测数据是否被修改;二是使用加锁机制,如在volatile变量的读写操作中确保原子性。博客强调了并发控制的重要性以及避免ABA问题的必要措施。
摘要由CSDN通过智能技术生成

ABA问题发生在同步期间,当一个位置被读取两次,两个读取具有相同的值,并且“值相同”用于指示“没有任何改变”。但是,另一个线程可以在两个读取之间执行并更改值,执行其他工作,然后更改该值,从而欺骗第一个线程思考“没有任何改变”,即使第二个线程的工作违反了该假设。

常见在乐观锁 和 volatile中

有两种方式去尝试
第一种是在数据后加上版本号/时间戳 来确定返回写入时有没有修改过

另外一种像虽然 HashEntry 中的 value 是用 volatile 关键词修饰的,但是并不能保证并发的原子性,所以 put 操作时仍然需要加锁处理。

加锁处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值