开发者社区 问答 正文

notify唤醒wait没有反应

写了一个简单的生产者消费者的小程序,我想要的结果是
producer1 1
consumer1 0
但结果只出现了producer1 1
调试的时候发现,消费者consumer1在进入wait()后没有被唤醒,不知道是为什么,请大神帮忙解答
screenshot
screenshot

展开
收起
蛮大人123 2016-02-21 18:57:08 2458 分享 版权
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    注意,唤醒后是执行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();
            }
        }
    2019-07-17 18:46:18
    赞同 展开评论
问答地址: