简介
经过多年填表和等待,你终于获得银行执照,可以开办自己的银行了!
首先要让信息系统运行起来。忙碌一天后,系统已经支持开户、销户、存款与取款。
你没有先写测试,而是请朋友试用。仅过五分钟,一人就说钱少了。虽然你确信没有程序错误,还是查看了日志。
原来朋友把测试账号交给另一位朋友,两人同时对同一账户进行存取款,触发了并发操作。
你认为不可能有人同时访问同一账户,朋友却指出银行规则明确要求支持这一场景。因此,不支持并发就不能上线。你只好决定明天继续修复,发布至少再推迟一天。
任务说明
实现支持开户、销户、存款和取款的银行账户。
账户可以通过网页、手机和自动扣款等渠道访问,因此必须允许多个线程或进程安全并发操作。例如,多笔存取款同时发生时,读取余额与写回新余额之间不能存在竞态条件。
账户应支持关闭,关闭后的所有相关操作必须失败。