假设某家银行每接受一次顾客的汇款,便可计算出当前汇款总额。若现有两个顾客,每人分3次、每次100元将钱汇入。试模拟该银行,输出格式如下:
顾客甲第1次存入100元,汇款总额100
顾客乙第1次存入100元,汇款总额200
顾客乙第2次存入100元,汇款总额300
为什么第一行数据输出两百
假设某家银行每接受一次顾客的汇款,便可计算出当前汇款总额。若现有两个顾客,每人分3次、每次100元将钱汇入。试模拟该银行,输出格式如下:
顾客甲第1次存入100元,汇款总额100
顾客乙第1次存入100元,汇款总额200
顾客乙第2次存入100元,汇款总额300
为什么第一行数据输出两百
你的 synchronized(this) 是用在线程里面的方法中,实际是限制线程内部的同步,线程间仍可以并行。同时启动两个线程,num=num+100几乎是同时执行,所以输出时会是200。可以将 int num 改为线程安全的比如 AtomicInteger num,线程内不再需要 synchronized(this)。