为什么用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

相关推荐

Java大菜狗:纯纯招黑奴,一天还不到两百那么多要求,还不迟到早退,以为啥啊,给一点工资做一堆活,还以不拖欠员工工资为荣,这是什么值得骄傲的事情吗,纯纯***公司
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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