数据表中:记录 x.value = 50, y.value = 50;
假设 支付宝 中,x、y 是 情侣,对于每对情侣总金额小于100元的,支付宝决定赠送 100元 红包。
线程1:
if (x.value + y.value <= 100) {
x.value += 100;
}
线程2:
if (x.value + y.value <= 100) {
y.value += 100;
}
```
线程1 执行 if 后,线程2再执行if,都满足条件。
接着线程1修改x的值,再提交,发现x的版本号没变,修改成功,x版本号加1:x.value = 150
然后线程2修改y的值,再提交,发现y的版本号没变,修改成功,y版本号加1:y.value = 150
支付宝就损失了 100 元。
这好像不是锁的问题而是你的逻辑的问题,是不是歌词下载这种操作,每次应该修改x,y两个的版本号,而不是单一个
没看懂你说的什么意思,我就没看到