老师,没理解课程中的boolean这个设置以及下面的使用

来源:5-1 线程间通信

UUU加油

2022-05-17 12:22:00

①既然 boolean flag=false.此时容器无数据

那么!false=true.此时容器有数据

既然有数据了,为啥消费的时候还要等待呢?

②同理, 为啥if(flag) 即容器没数据的时候,要等待才能生产数据呢。这个地方看了两三遍。没想明白。

不知道该怎么理解这个代码。

麻烦老师,再帮我梳理一下,或者说换一种方式理解

写回答

1回答

好帮手慕小蓝

2022-05-17

同学你好,同学的理解中,对于flag变量的理解与代码相反,如下图代码:

https://img.mukewang.com/climg/628330140990a16d06570432.jpg

由于flag初始是false,此时执行线程时,有两种可能:

1.执行set线程任务。

2.执行get线程任务。

如果先执行set线程任务,那么判断if语句时,结果为false,则不会进入等待。正常进行生产活动并且修改flag的值之后,线程运行结束。

如果先执行get线程任务,那么判断if语句时,结果为true,则会进入等待,不会继续进行消费活动。

祝学习愉快~


0

0 学习 · 9886 问题

查看课程