关于存取款流程问题

关于存取款流程问题

账户原始是1000 存一百执行后未执行set方法 去执行取款应为1000-200=800.然后老师说执行存款的set(100)即为1000+100=1100,然后执行输出语句,然后执行取款的set 方法,为什么会是800,针对同一个账户的操作,存款应该变成1100了啊。

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

存款线程和取款线程对银行账户的访问是随机的,可能执行存款后,还没有更新银行账户余额的时候,另一个线程就开始执行取款操作,这个时候就会出现数据不一致的情况,解决办法就是给银行对象加锁,也就是说当我们正在执行存款的时候,不允许其他的线程对账户余额进行操作。祝学习愉快~

  • 慕无忌0089299 提问者 #1
    我是按照老师说的那个流程推算的,存取是随机的但是按照老师那个应该结果一定啊
    2018-07-03 15:42:54
  • imoocLovers 回复 提问者 慕无忌0089299 #2
    当存款的set执行完后,线程执行取款的set,此时要注意余额balance是800,它是将之前balance = balance - 200的结果又存进账户余额了。
    2018-07-03 16:48:18
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师