为什么用while可以避免虚假唤醒问题呢?

就是生产者消费者的一个问题,在多线程的情况下为什么用if会产生一个虚假唤醒的问题,因为使用了notifyAll,会唤醒所有的线程,但是为什么用while代替if就可以了呢?如果是多核多线程的情况下,是可以并行的,那么假设有两个线程同时执行到了while语句,然后都可以跳出循环,那么不还是会引发多线程的一个问题吗,但是官方说用while是没问题的,我用while的确也发现没问题,但是我不太理解为什么用while就可以。哪位大哥小姐姐帮助下弱小的我。#学习路径#
全部评论
 拿消费者举例,假如存在虚假唤醒,那么此时的num==0,就进入等待,一直等到num不是虚假唤醒而是真实唤醒变成了1
点赞 回复 分享
发布于 2020-12-25 14:55
如果虚假唤醒的线程的while条件不满足 还会进入循环 再一次wait
点赞 回复 分享
发布于 2020-07-28 20:34

相关推荐

点赞 评论 收藏
分享
10-20 15:26
门头沟学院 Java
桥头牛油火锅:这个比例不正常,简历的话项目经历放中间,项目功能分点可以再明确点,前面加“·”或者“1 2 3”,另外简历上的照片可以去外面摄影店拍一下,以后也会用到的,hr筛人也是多少会看的,毕竟世界是一个巨大的卡颜局嘛,还有有些hr由于消息太多可能没看到,后面可能会回来找你,要简历的还会多一点,我也是普2本,比例大致是600:90:15:3,当然我实力不太够,拿的offer比较少,慢慢来吧
点赞 评论 收藏
分享
迷茫的大四🐶:看来已经准备换人了
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务