当前位置: 代码迷 >> J2SE >> !一个小程序
  详细解决方案

!一个小程序

热度:110   发布时间:2016-04-24 01:30:23.0
求助!一个小程序
Java code
class ProductorConsumer{    public static void main( String args[] )    {        Resource res=new Resource();// 创建共享资源            new Thread( new Productor(res) ).start();        new Thread( new Productor(res) ).start();        new Thread( new Consumer(res) ).start();        new Thread( new Consumer(res) ).start();    }}class Resource{    private int account=0;    private boolean flag=false;    public boolean getFlag()    {        return flag;    }    public void setFlag(boolean a)    {        flag=a;    }    public void product()    {        account++;        System.out.println(Thread.currentThread().getName()+"生产"+account);    }    public void pay()    {        System.out.println("\t\t\t"+Thread.currentThread().getName()+"消费"+account);    }}class Productor implements Runnable{    private Resource res;    Productor(Resource res)    {        this.res=res;    }    public void run()    {        synchronized(res)        {            while(res.getFlag())                try                {                    this.wait();                }                catch (Exception e)                {                    System.out.println("error");                }            res.product();            res.setFlag(true);            this.notifyAll();        }    }}class Consumer implements Runnable{    private Resource res;    Consumer( Resource res )    {        this.res=res;    }    public void run()    {        synchronized(res)        {            while(!res.getFlag())                try                {                    this.wait();                }                catch ( Exception e )                {                    System.out.println("error");                }            res.pay();            res.setFlag(false);            this.notifyAll();        }            }}



为什么一直都是error啊,wait()怎么就异常了呢?求解

------解决方案--------------------
不对,改成:
res.wait();
res.notify();
  相关解决方案