Java中的wait()为什么总是放在while中,而不是if? 如题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 答:问得好。这个很重要。这是由于其它线程(与你的wait()完全无关的其它线程)会调用notifyAll(),而这个线程并不是你的wait()所共同协作的那个线程。因此,每一次被唤醒,你都要检查一次你wait()等待的条件。因而要用while。 因为要循环!当然用while不用if了 因为要等待notifyAll(),把线程唤醒,所以要while一直等待着啊,所以不能用if 因为wait()方法,会把对象锁贡献出去,而自己处于等待状态,当拥有对象锁的对象调用notify() 或者notifyAll()的时候,当前的线程并没有把锁还给其他线程,直到当前线程synchronized方法执行完毕,在对象监听器上等待的线程才有执行的机会。 if(条件不满足){this.wait();}....其他语句当其他线程notify()或者notifyAll()的时候,你继续执行其他的语句这个时候,也许你的条件依然不满足,所以得这样:while(条件不满足){this.wait();}.....其他语句 if(条件不满足){this.wait();}....其他语句当其他线程notify()或者notifyAll()的时候,你继续执行其他的语句这个时候,也许你的条件依然不满足,所以得这样:while(条件不满足){this.wait();}.....其他语句 要等待notifyAll(),把线程唤醒,所以要while一直等待着啊,所以不能用if 到底printwriter中println方法与write方法有什么区别 请问下面程序错在哪?十分感谢!! 求正则 jTalbe中的单元格中怎样添加JRadioButton? 怎样自定义进程名 大家帮忙看一个创建word文档的问题 怎样判断输入的字符串是否是“YYYY-MM-DD”格式的? 运动的思想是什么?怎么有点迷惑不解? 华为公司 一个关于RMI的问题!请高手们解答!! 在Solaris操作系统里,java应用程序,如何封掉系统菜单中的"关闭"菜单项? 几道简单的JAVA题 来者 有分
的时候,当前的线程并没有把锁还给其他线程,直到当前线程synchronized方法执行完毕,在对象监听器上等待的线程才有
执行的机会。
if(条件不满足){
this.wait();
}
....其他语句当其他线程notify()或者notifyAll()的时候,你继续执行其他的语句
这个时候,也许你的条件依然不满足,所以得这样:while(条件不满足){
this.wait();
}
.....其他语句
if(条件不满足){
this.wait();
}
....其他语句当其他线程notify()或者notifyAll()的时候,你继续执行其他的语句
这个时候,也许你的条件依然不满足,所以得这样:while(条件不满足){
this.wait();
}
.....其他语句