厨师与服务生的问题

Posted on 2006-10-22 14:11 久城 阅读(328) 评论(0)  编辑  收藏 所属分类: JavaTest

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

/**
*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();  
 }
}



欢迎来访!^.^!
本BLOG仅用于个人学习交流!
目的在于记录个人成长.
所有文字均属于个人理解.
如有错误,望多多指教!不胜感激!


只有注册用户登录后才能发表评论。


网站导航:
 

Copyright © 久城