发布网友 发布时间:2023-06-26 11:20
共1个回答
热心网友 时间:2023-08-24 21:54
问题
小明跑到ATM机去取款,ATM实现逻辑读取卡上金额,输入取款金额,然后更新卡扣余额。一个人操作这张卡没有问题,如果是100个人使用这张卡就有问题,因为100个人同时获取卡内余额有可能都是同样的金额,更新金额的会导致金额不一致问题,这是程序处理就需要加上(乐观锁)或(悲观锁)了。
乐观锁
乐观锁其实在是在表中加上version字段,更新数据时将version字段+1,更新数据条件中version=当前version字段
乐观锁虽然能保证数据一致性,但是100同时执行,可能只有一部分数据更新成功,其他都会失败。
悲观锁
悲观锁是在读取数据时加锁,不允许其他线程操作。
JPA说明
使用方式
LockModeType说明