关于flag问题

关于flag问题

flag初始为false,表示池中还没有数据

为什么不是这样写?

set方法
if(!flag){
//如果true,表示有数据,等待
try{
wait();
}cath(...){...}
}
//否则生产
this.n=n;
flag=true;//生产完毕,置为true

get方法
if(flag){
//如果false,表示没有数据,等待
try{
wait()
}catch(...){...}
}
//否则,取出数据
System...
flag=false;//已取出,置为false
return n;


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

set()方法是用来生产数据的,if(flag)代表的是有数据,有数据就不生产了,只有当get()方法执行完把数据获取完,才能再生产所以需要wait()。get()方法是获取数据,所以不能是if(!flag),这个表示的是有数据,有数据就不能wait()了,应该是没有数据的时候wait()。

  • 慕村2295823 提问者 #1
    flag初始值不是false吗,为什么if(flag)是有数据,if(!flag)是没有数据?
    2018-03-11 09:34:32
  • irista23 回复 提问者 慕村2295823 #2
    flag初始值是false表示还没有数据,if(flag)这里flag只有为true才能执行if后面语句,flag为true就是有数据a,同理if(!flag)
    2018-03-11 09:47:48
  • 慕村2295823 提问者 回复 irista23 #3
    谢谢老师,终于明白了
    2018-03-11 13:23:08
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师