Boolean flag=false;为啥!flag为false,flag为true

Boolean flag=false;为啥!flag为false,flag为true

public class Queue {

private int n;

boolean flag=false;

public synchronized int get() {

if(!flag){

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("消费:"+n);

return n;

}

public synchronized void set(int n) {

if(flag){

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

System.out.println("生产:"+n);

this.n = n;

}

}


正在回答 回答被采纳积分+1

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

2回答
吃吃吃鱼的猫 2019-04-10 14:38:34

同学你好,老师的意思是不能这么写if(flag),如果写成这样,就表示flag为true的时候执行等待方法,要写成if(!flag)也就是flag为false,那么!flag为true,就可以执行等待方法了。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

吃吃吃鱼的猫 2019-04-10 11:40:57

同学理解的不正确哦。flag初始值为false,!表示非,所以!flag为false的反义词,代表true,flag代表false。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 athr #1
    我的理解是跟你一样的,但是为什么视频里是这样讲的
    2019-04-10 12:58:15
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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