class Ren
{
private String name;
private String sex;
boolean b=false;
public synchronized void set(String name,String sex)

if(b)
try{this.wait();}catch(Exception e){}
this.name=name;
this.sex=sex;
b=true;
this.notify();
}
public synchronized void out()
{   
if(!b)
            try{this.wait();}catch(Exception e){}
System.out.println(name+sex);
b=false;
this.notify();
其中的BOOLEAN b 在私有成员中已经定义成false .if(b)
try{this.wait();}catch(Exception e){}
我理解的意思是如果为false 则等待 ,下面的if(!b)
            try{this.wait();}catch(Exception e){}
意思为如果为非false 即true 则等待. 
要是这么理解我就搞不通了 。
还有一种理解为 if(b)
            try{this.wait();}catch(Exception e){}
b 默认为TRUE, 而成员定义的时候为false 所以 if(b)则不用等待。
=====我的理解对不对 大神们帮帮忙 这点我看视频好几遍了 一直没搞清楚 Java多线程boolean

解决方案 »

  1.   

    这不是线程问题。。这是if条件判断问题
    if()括号里条件表达式结果为true,if后面的语句或语句块才会执行
    如b=false if(b){...},{}里的语句就不会执行。。这有什么不能理解的。。
      

  2.   

    建议if、while、for之类的分支操作,要用{}括起来,能省不少问题。
      

  3.   

    我觉得还是if判断的问题,if语句判断括号里面的内容时,在括号里没有指明是true或者false的情况下,都是默认为false的。所以你执行的结果搞反了,所以得不到预期的结果。
      

  4.   

    这段代码的含义应该是 保证set() 和 out() 在多线程情况下交替执行