时间顺序 | 线程1 | 线程2 | 说明 |
---|---|---|---|
T1 | X=A | — | 线程 1 加入监控 X |
T2 | 复杂运算开始(以为是X=A,其实过程中参杂了X=B) | 修改 X=B | 线程 2 修改 X,此刻为 B |
T3 | 处理简单业务 | — | |
T4 | 修改 X=A | 线程 2 修改 X,此刻又变回 A | |
T5 | 结束线程 2 | 线程 2 结束 | |
T6 | 检测X=A,验证通过,提交事务 | — | CAS 原理检测通过,因为和旧值保持一致 |
ABA问题
最新推荐文章于 2024-05-15 12:43:40 发布
时间顺序 | 线程1 | 线程2 | 说明 |
---|---|---|---|
T1 | X=A | — | 线程 1 加入监控 X |
T2 | 复杂运算开始(以为是X=A,其实过程中参杂了X=B) | 修改 X=B | 线程 2 修改 X,此刻为 B |
T3 | 处理简单业务 | — | |
T4 | 修改 X=A | 线程 2 修改 X,此刻又变回 A | |
T5 | 结束线程 2 | 线程 2 结束 | |
T6 | 检测X=A,验证通过,提交事务 | — | CAS 原理检测通过,因为和旧值保持一致 |