模拟KFC 厨师与顾客的操作
class KFC{
private String name ;
private int count ;
private boolean flag = false ;
//循环生产的方法
public synchronized void set(String name ){
while(flag)
try {wait();} catch (InterruptedException e) {}
count++;
this.name = "第"+count + "份"+foodName;
System.out.println(Thread.currentThread().getName()+"生产的"+this.foodName)
flag = true ;
notifyAll();
}
//循环消费的操作
public synchronized void take(){
while(!flag)
try {wait();} catch (InterruptedException e) {}
System.out.println(Thread.currentThread().getName()+"...消费了"+this.foodName)
flag = false ;
notifyAll();
}
}
//生产者类
class producter implements Runnable{
private KFC kfc;
public Producter(KFC kfc) {
this.kfc = kfc;
}
public void run() {
while (true) {
kfc.set("香蕉");
}
}
}
//消费者类
class customer implements Runnable{
private KFC kfc;
public customer(KFC kfc) {
super();
this.kfc = kfc;
}
public void run() {
while (true) {
kfc.take();
}
}
}
//测试类
public class KFCTest {
public static void main(String[] args) {
KFC kfc = new KFC();
Producter pro = new Producter(kfc);
Producter pro1 = new Producter(kfc);
customer cus = new customer(kfc);
customer cus1 = new customer(kfc);
Thread a = new Thread(pro);
Thread b = new Thread(cus);
Thread c = new Thread(pro1);
Thread d = new Thread(cus1);
a.start();
b.start();
c.start();
d.start();
}
}