猿问

用线程解决同时存钱和取钱的问题?

怎么用线程解决 同时存钱和取钱的问题。当余额>10000时 不能存钱,当余额<0时不能取钱。

HelloWord3
浏览 1576回答 1
1回答

尧叔

保证数据的一致性,在账户里面加入一个version 字段 代表版本号,持久化之前看看版本号和库里面是否一样,每持久化一次就版本号加1。例如:加钱的线程和扣钱的线程同时取出来同一条数据金额为1000版本号为1,第一个线程加钱100然后准备存入数据,对比发现版本号和库里面都是1说明期间该条数据没有被动过可以update,然后库里面这条数据变成了1100版本号为2,扣钱的线程扣100 准备把账户改成900 对比版本号发现已经不是1而是2了 就会更新失败,这样就会避免脏数据。理解这个你的问题就可以自己解决了,毕竟你的问题描述的不清楚,我不确定怎么回答。谢谢采纳~
随时随地看视频慕课网APP

相关分类

Java
我要回答