最基本的多线程的实现...看寝室的兄弟们学到多线程了,自己也回忆回忆!
/**
*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();
}
}
本文通过一个多线程示例,展示了如何使用Java实现厨师和服务生之间的协调工作。具体来说,厨师负责准备菜品,而服务生则负责取走这些菜品。通过synchronized关键字和wait/notify机制确保线程间的正确同步。
151

被折叠的 条评论
为什么被折叠?



