这一节课,要对数据做并发控制,要采用数据锁进行并发控制

模拟进程的方法,仍然是让他睡5秒

使用try catch

数据库中这里的数据是没有的

重新发起支付

调用统一下单API和支付通知的id,与处理订单都加载了

在service和impl层中都睡眠了,因此会重复发送通知

模拟了一个通知并发,导致支付日志出现了两次

这一次重复的支付日志又一次出现了

再对业务数据处理之前要对并发锁,进行相关处理

在这里加一把锁

先尝试获取锁

然后把数据状态检查

然后把对数据的状态检查和对数据的处理都放到这个锁里

成功获取则立即返回false,否则返回true

用这把锁注意事项,要主动释放锁

释放锁的写法

这一次更新订单状态和记录重复日志,没有再重复发生

这里边没有多余的数据记录



被折叠的 条评论
为什么被折叠?



