怎么用线程解决 同时存钱和取钱的问题。当余额>10000时 不能存钱,当余额<0时不能取钱。
1 回答
已采纳
尧叔
TA贡献77条经验 获得超201个赞
保证数据的一致性,在账户里面加入一个version 字段 代表版本号,持久化之前看看版本号和库里面是否一样,每持久化一次就版本号加1。
例如:加钱的线程和扣钱的线程同时取出来同一条数据金额为1000版本号为1,第一个线程加钱100然后准备存入数据,对比发现版本号和库里面都是1说明期间该条数据没有被动过可以update,然后库里面这条数据变成了1100版本号为2,扣钱的线程扣100 准备把账户改成900 对比版本号发现已经不是1而是2了 就会更新失败,这样就会避免脏数据。理解这个你的问题就可以自己解决了,毕竟你的问题描述的不清楚,我不确定怎么回答。
谢谢采纳~
添加回答
举报
0/150
提交
取消