jiang4252 发表于 2016-9-25 17:05:54

数据库高频率读写问题

        @Override
        public 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]
查看完整版本: 数据库高频率读写问题