多账户(大于2个)转账死锁问题
程序员文章站
2022-04-19 13:53:23
...
并发事务中,操作相同账户可能会引发死锁,我列举一个死锁问题,希望万能的网友帮忙想出个好的方案。
假如两个并发转账事务,涉及A/B/C 3个账户:
事务1,A向B转账,B向C转账:
A->B B->C
事务2,C向B转账
C->B
事务1获取到了A、B账户行锁,
同时事务2获取到了C账户行锁,
此时 事务1想要再去获取C账户行锁,但是事务2获取到了C账户行锁,想要去获取B账户行锁,此时就发生了死锁,这种问题有什么好的解决方案,希望大家帮帮忙
若把转账改为序列化执行可以解决这个问题,但是会影响性能,不可取,有什么其他的巧的办法不
假如两个并发转账事务,涉及A/B/C 3个账户:
事务1,A向B转账,B向C转账:
A->B B->C
事务2,C向B转账
C->B
事务1获取到了A、B账户行锁,
同时事务2获取到了C账户行锁,
此时 事务1想要再去获取C账户行锁,但是事务2获取到了C账户行锁,想要去获取B账户行锁,此时就发生了死锁,这种问题有什么好的解决方案,希望大家帮帮忙
若把转账改为序列化执行可以解决这个问题,但是会影响性能,不可取,有什么其他的巧的办法不
上一篇: java 线程池
推荐阅读