ABA问题

来源:7-1 J.U.C-FutureTask-1

daemon93

2019-01-12

教程中哪一节有说ABA问题吗,ABA这个是什么意思,还请老师指导下

写回答

1回答

Jimin

2019-01-12

你好,这里正好有个例子可以回答你的问题。具体如下:
某人账户里有10000元,提取了5000元,因为提款机问题,有两个线程,同时把余额从10000变为5000
线程1(提款机):获取当前值10000,期望更新为5000,
线程2(提款机):获取当前值10000,期望更新为5000,
线程1成功执行了,线程2因为某种原因block了,这时汇款进来5000
线程3(默认):获取当前值5000,期望更新为10000,
这时候线程3成功执行,余额变为10000,
线程2从Block中恢复,获取到的也是10000,对比之后,发现可以提交,更新余额为5000!!!
此时,本来余额应该为10000(10000-5000+5000),但是实际上却变成了5000(10000-5000+5000-5000)
这就是ABA问题带来的线程安全问题。

0
0

Java高并发编程,构建并发知识体系,提升面试成功率

构建完整并发与高并发知识体系,倍增高薪面试成功率!

3923 学习 · 832 问题

查看课程