2008年2月22日星期五

生产者消费者进程 正确程序

 class Test
{
  public static void main(String args[])
  {  Queue q=new Queue(); 
   Producer pt=new Producer(q); 
   pt.start();
  /* try
   {
     Thread.sleep(500);
   }
   catch(InterruptedException e)
   {
   
   }
   */
   Comsumer ct=new Comsumer(q); 
   ct.start();
 
 
 
 
 
  
  
  }
}
 
 class Producer extends Thread
 {
  Queue q;
  public Producer(Queue q)
  {
   this.q=q;
  }
 
  public  void  run()
  { 
  
    for(int i=0;i<10;i++)
    {
     q.put(i); 
    }
  }
 
 }
 
 class Comsumer extends Thread
 {
 
  Queue q;
  public Comsumer(Queue q)
  {
   this.q=q;
  }
 
  public void run()
  { 
   while(true)
   {
    q.get();
   }
  }
 }
 
 class Queue
 {
  int value;
  boolean bFull=false;
  
  public synchronized  void put(int i)
  {
   if(bFull==false)
   {
   
    value=i;
    System.out.println("Producer put "+i);
    bFull=true;
    try
    {
     this.wait();
    }
    catch(Exception e){}   
   }
 
  }
 
   public synchronized void get()
  {  
  
  if(bFull==true)
  {
   System.out.println("Comsumer get "+value);
   bFull=false;
   this.notify();
      }
  }
 }

没有评论: