realsmy 发表于 2013-2-5 01:27:10

厨师与服务生的问题

最基本的多线程的实现...看寝室的兄弟们学到多线程了,自己也回忆回忆!

/**
*title 用多线程实现厨师与服务生的问题
*@author:realsmy
*date 2006-10-22 14:10
*/
public class Test{
 public static void main(String args[]){
  CanGuan c=new CanGuan();
  new Thread(new ChuShi(c)).start();
  new Thread(new FuWuSheng(c)).start();
 }
}
//厨师一直执行餐馆类的set()方法
class ChuShi implements Runnable{
 CanGuan c;
 public ChuShi(CanGuan c){
  this.c=c;
 }
 public void run(){
  while(true){
   c.set();   
  }    
 } 
}
//服务生一直执行餐馆类的get()方法
class FuWuSheng implements Runnable{
 CanGuan c;
 public FuWuSheng(CanGuan c){
  this.c=c;
 }
 public void run(){
  while(true){
   c.get();
  }
 } 
}
class CanGuan
{
 private boolean b = true;
 private int i =1;
 public synchronized void set()
 {
  if(!b)
   try{
    wait();
   }catch(Exception e){}
   System.out.println("厨师做好了菜"+i);
   try{
    Thread.sleep(1000);
   }catch(Exception e){}
   b = false;
   notify();
  
 }
 public synchronized void get()
 {
  if(b)
   try{
    wait();
   }catch(Exception e){}
   System.out.println("服务生取走了菜"+i);
   i++;
   try{
    Thread.sleep(1000);
   }catch(Exception e){}
   b = true;
   notify();  
 }
}
页: [1]
查看完整版本: 厨师与服务生的问题