登陆购买课程后可参与讨论,去登陆吧
同学你好,当flag定义为false时,(!flag)表示的是true,(flag)表示的是false
而该案例中是先生产后消费,在set方法执行完毕,此时flag被设置为了true,
可是线程的先后顺序是不确定的,万一先消费的线程先执行,那逻辑不就不通了吗?
同学你好,根据课程代码解析代码,如下所示:
第一次flag等于false时,表示没有数据产生,数据为空,此时线程不进入等待,所以执行下面生产数据的代码,进入生产数据,生产完毕,唤醒线程,容器中已经有数据, flag设置为true,进行消费,只有!flag判断为ture时,才可以进行消费。所以是可以避免在没有数据的情况下,先消费的情况。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
8 2
25 4
162 1
40 3
66 1
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星