谁能告诉一下 这两段java代码的区别啊 运行结果总是不一样 50

flag=false;if(flag){try{this.wait();}catch(InterruptedExceptione){}}else{this.name=na... flag = false;
if(flag){
try{this.wait();}catch(InterruptedException e){}
}
else{
this.name = name;
this.sex = sex;
flag = true;
this.notify();
}
和下面这一段
flag = false;
if(flag){
try{this.wait();}catch(InterruptedException e){}
}
this.name = name;
this.sex = sex;
flag = true;
this.notify();class Resource
{
private String name;
private String sex;
private boolean flag = false;

public synchronized void set(String name,String sex)
{
if(flag)
try{this.wait();}catch(InterruptedException e){}
this.name = name;
this.sex = sex;
flag = true;
this.notify();

}

public synchronized void out()
{
if(!flag)
try{this.wait();}catch(InterruptedException e){}
System.out.println(name+"...+...."+sex);
flag = false;
notify();

}
}
展开
 我来答
野人无事不言L
2016-04-19 · TA获得超过1413万个赞
知道顶级答主
回答量:2242万
采纳率:0%
帮助的人:141.3亿
展开全部
主线程 a线程 b线程 第一段 flag = true,执行完毕 等待 等待 第二段 flag = true 执行完毕 执行完毕 执行完毕 wait() 当前线程暂停,其他线程占领cpu,运行态=>关注flag是否为synchronized notify() 唤醒可运行态的thread,让他们等待cpu分配来execute.注意理解每条线程的变量(global,private,synchronized). 以上
追问
复制的别人答案啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式