写了一个简单的生产者消费者的小程序,我想要的结果是
producer1 1
consumer1 0
但结果只出现了producer1 1
调试的时候发现,消费者consumer1在进入wait()后没有被唤醒,不知道是为什么,请大神帮忙解答
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
注意,唤醒后是执行wait后的代码,而不是wait所在的方法重新执行,所以不会打印else中的信息。
这代码得改一下,addnum也一样
public synchronized void subNum(){
try{
while(productionNumber<=min){
wait();
}
productionNumber--;
System.out.println(Thread.currentThread().getName()+" "+productionNumber);
this.notify();
}
catch(InterruptedException ex){
ex.printStackTrace();
}
}