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

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

相关推荐

1 1 评论
分享
牛客网
牛客企业服务