生产者/消费者方式1
package demo;
import java.util.ArrayList;
import java.util.List;
/*
生产者/消费者模式
假设有这样一种情况:有一个盘子,盘子里只能放一颗鸡蛋。A专门往盘子里放鸡蛋,如果盘子里有鸡蛋,则一直等到盘子里没鸡蛋;
B专门从盘子里拿鸡蛋,如果盘子里没鸡蛋,则等待直到盘子里有鸡蛋。
* */
public class Plate {
private List<Egg> eggs = new ArrayList<Egg>(1);
public synchronized Egg getEgg(){
while(eggs.size() == 0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Egg egg = eggs.get(0);
System.out.println("拿到鸡蛋");
eggs.clear();//清空盘子
notify();//唤醒放鸡蛋线程,使放鸡蛋线程放鸡蛋
return egg;
}
public synchronized void putEgg(Egg egg){
while(eggs.size() > 0){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
eggs.add(egg);//往盘子里放鸡蛋
System.out.println("放入鸡蛋");
notify();//唤醒取鸡蛋线程,使取鸡蛋线程取鸡蛋
}
static class PutEggThread extends Thread{
private static final int PUT_EGG_TIMES = 5;
private Plate plate;