看啥推荐读物
专栏名称: 码农翻身
工作15年的前IBM架构师分享好玩有趣的编程知识和职场的经验教训, 不容错过。
今天看啥  ›  专栏  ›  码农翻身

当多线程并发遇到Actor

码农翻身  · 公众号  · 程序员  · 2018-01-17 19:00
1多线程并发的难题张大胖在做一个银行相关的项目,写了一个Account的类,用来表示一个用户的银行账号,根据银行的常规业务,自然要提供两个方法,存款(deposit)和取款(withdraw)。为了防止多线程并发时导致的数据不一致问题,张大胖给每个方法都加了synchronized, 那意思很清楚,想进入某个方法执行存款或取款操作,必须得先获得一把锁才行。(注:为了简化,这里没有做边界条件检查。)但是在做转账操作的时候,为了保证一致性,必须得把两个账户都加上锁,然后才可以操作,于是张大胖写下了这样的代码,他觉得很简单,立刻就提交给Bill ,让他Review。富有经验的Bill立刻就发现了问题,马上对张大胖说:“这样会出现死锁!”张大胖说:“这么简单的代码, ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照