当前位置:编程学习 > JAVA >>

JAVA中的线程问题 求大神 轻喷 新手一枚


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 --------------------编程问答-------------------- 这不是线程问题。。这是if条件判断问题。。。
if()括号里条件表达式结果为true,if后面的语句或语句块才会执行
如b=false if(b){...},{}里的语句就不会执行。。这有什么不能理解的。。 --------------------编程问答-------------------- 建议if、while、for之类的分支操作,要用{}括起来,能省不少问题。 --------------------编程问答-------------------- 谢谢上面的回答 我可能是前面的基础还没掌握好  --------------------编程问答--------------------
引用 1 楼 fudongrifdr 的回复:
这不是线程问题。。这是if条件判断问题。。。
if()括号里条件表达式结果为true,if后面的语句或语句块才会执行
如b=false if(b){...},{}里的语句就不会执行。。这有什么不能理解的。。



嗯  谢谢 以后可能还得多请教了 --------------------编程问答-------------------- 我觉得还是if判断的问题,if语句判断括号里面的内容时,在括号里没有指明是true或者false的情况下,都是默认为false的。所以你执行的结果搞反了,所以得不到预期的结果。 --------------------编程问答-------------------- 这段代码的含义应该是 保证set() 和 out() 在多线程情况下交替执行 
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,