谁能告诉一下 这两段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();
}
} 展开
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();
}
} 展开
展开全部
主线程 a线程 b线程 第一段 flag = true,执行完毕 等待 等待 第二段 flag = true 执行完毕 执行完毕 执行完毕 wait() 当前线程暂停,其他线程占领cpu,运行态=>关注flag是否为synchronized notify() 唤醒可运行态的thread,让他们等待cpu分配来execute.注意理解每条线程的变量(global,private,synchronized). 以上
追问
复制的别人答案啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询