我写了一个利用多线程通信的程序目的是输出:
杨海刚----->男
王云------>女
杨海刚----->男
王云------>女
...
...
这样的结果
可结果老是
杨海刚----->男
杨海刚----->男
杨海刚----->男
...
王云------>女
王云------>女
王云------>女
...
杨海刚----->男
杨海刚----->男
杨海刚----->男
...
不知道哪里不对以下是代码:
class Q1
{
    private String name=new String("王云");
    private String sex =new String("女");
    boolean bFull=true;
    public synchronized void put(String name, String sex)
    {  
      if(!bFull)
         wait();
       this.name=name;
       try
       {
           Thread.sleep(10);
       }
       catch(Exception e)
       {
           System.out.println(e.getMessage());
       }
       this.sex=sex;
       bFull=false;
       notify();
    }
    public synchronized void get()
    {
       if(bFull)
           wait();
       
           System.out.println(name+"------->"+sex);
   
       bFull=true;
       notify();
    }
}
class Producer1 implements Runnable
{
    Q1 q=null;
    public Producer1(Q1 q)
    {
       this.q=q;
    }
    public void run()
    {
       int i=0;
       while(true)
       {
           if(i==1)
           {
               q.put("王云", "女");
           }
           else
           {
               q.put("杨海刚", "男");
           }
           i=(i+1)%2;
       }
    }
}
class Consumer1 implements Runnable
{
    Q1 q=null;
    public Consumer1(Q1 q)
    {
        this.q=q;
    }
    public void run()
    {
      while(true)
      {
         q.get();
      }
    }
}
class ThreadCommunation1
{
public static void main(String[] args)
{
    Q1 q=new Q1();
    new Thread(new Consumer1(q)).start();
    new Thread(new Producer1(q)).start();
  }
}