C 知道
编程想法是:一个银行账户5000块,两夫妻一个拿着存折,一个拿着卡,开始取钱比赛,每次只能取一千块,要求不准出现线程安全问题。然后用while循环却多输出了一次,用if循环就很正常。这是什么原因。
收起
多个线程同时获取到num=1000时就会出现该现象。
while用死循环,判断num>0要放在锁内部,也就是说要用if语句,你第二种做法是对的。
因为2个线程都获取到了num=1000,都符合条件,然后排队等待执行,如果在锁内部用if语句判断就不存在改情况了。
知道了,谢谢!
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!