有个问题,一个spring容器管理项目(service是单例),一个方法会被并发访问,方法为同步方法且用@Transcation注解,数据库隔离机制为可重复读,
业务是这样的,用户交易后本地会产生一条交易流水记录,status为0, 然后调用第三方支付,第三方支付会同步异步回调本地这个方法两次, 这个方法内部先判断status是不是为0 ,然后账户增加10元, 那假如同步异步同时回调,那会不会出现该用户账户增加两次金额情况
@Transcation
public synchronized void callback() {
查询交易流水记录 status
if(status == 0) {
用户帐号 增加10元
交易流水记录 status 设为1
} else {
不作为
}
}
慕神8447489
繁星coding
偶然的你