数据库高频率读写问题
@Overridepublic synchronized BigDecimal UpdateUserBalance(String userid ,BigDecimal price, boolean flag) {
SjUserBalance sjUserBalance = this.getEntity(SjUserBalance.class, userid);
BigDecimal curbalance;
if(flag){
curbalance = sjUserBalance.getBalance().subtract(price);
}else{
curbalance = sjUserBalance.getBalance().add(price);
}
sjUserBalance.setBalance(curbalance);
this.updateEntitie(sjUserBalance);
return curbalance;
}
这是修改用户数据balance自段的方法,调用频率很高,已经做了synchronized,防止并发操作,但是存在一个问题,当调用频率间隔小于30毫秒时就会出现问题,比如:
balance初始值为1000
第一次调用减50,剩余950
第二次调用加50,剩余1000
第三次调用减50,这时候就出问题了,使用this.getEntity取出来的值是950,正确的应该是1000
用jdbc也试过,一样的情况,帮忙解答下
页:
[1]