橘子糖浆 2022-01-17 09:59 采纳率: 100%
浏览 50
已结题

在线程学习中,为什么我这个用while循环会多输出了一句,用if循环就很正常

编程想法是:一个银行账户5000块,两夫妻一个拿着存折,一个拿着卡,开始取钱比赛,每次只能取一千块,要求不准出现线程安全问题。然后用while循环却多输出了一次,用if循环就很正常。这是什么原因。

img

img

  • 写回答

2条回答 默认 最新

  • 关注

    多个线程同时获取到num=1000时就会出现该现象。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    CSDN专家-赖老师(软件之家) 回复 CSDN专家-赖老师(软件之家) 2022-01-17 10:13

    while用死循环,判断num>0要放在锁内部,也就是说要用if语句,你第二种做法是对的。

    回复
    CSDN专家-赖老师(软件之家) 回复 CSDN专家-赖老师(软件之家) 2022-01-17 10:15

    因为2个线程都获取到了num=1000,都符合条件,然后排队等待执行,如果在锁内部用if语句判断就不存在改情况了。

    回复
    橘子糖浆 回复 CSDN专家-赖老师(软件之家) 2022-01-17 12:21

    知道了,谢谢!

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 1月26日
  • 已采纳回答 1月19日
  • 创建了问题 1月17日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部