如何处理并发修改同一条数据,乐观锁,悲观锁的实现及应用场景
为什么要加锁?下面通过一个例子来说明
id | name | amount |
---|---|---|
1 | 小明 | 1000 |
小明的账户上有1000 元 ,现在有两个线程同时往他账户上加钱。
-
A 线程准备往小明的账户上加100, 1, 读取到小明 有 1000 元, 1000 + 100 事务未提交;
-
B 线程准备往小明的账户上加200, 1, 读取到小明 有 1000 元 ,1000 + 200 事务未提交
; -
A 线程提交事务 小明账户余额变成1100, 但这时B 线程还不知道小明账户余额变成1100了;
id name amount 1 小明 1100 -
B 线程提交事务 小明账户余额变成1200
.id name amount 1 小明 1200