老师,没理解课程中的boolean这个设置以及下面的使用
来源:5-1 线程间通信
UUU加油
2022-05-17 12:22:00
①既然 boolean flag=false.此时容器无数据
那么!false=true.此时容器有数据
既然有数据了,为啥消费的时候还要等待呢?
②同理, 为啥if(flag) 即容器没数据的时候,要等待才能生产数据呢。这个地方看了两三遍。没想明白。
不知道该怎么理解这个代码。
麻烦老师,再帮我梳理一下,或者说换一种方式理解
1回答
好帮手慕小蓝
2022-05-17
同学你好,同学的理解中,对于flag变量的理解与代码相反,如下图代码:

由于flag初始是false,此时执行线程时,有两种可能:
1.执行set线程任务。
2.执行get线程任务。
如果先执行set线程任务,那么判断if语句时,结果为false,则不会进入等待。正常进行生产活动并且修改flag的值之后,线程运行结束。
如果先执行get线程任务,那么判断if语句时,结果为true,则会进入等待,不会继续进行消费活动。
祝学习愉快~
相似问题