Java生产者消费者模式

例子:

    一个桌子上有一个盘子,盘子里只能放一个鸡蛋。A专门往盘子里放鸡蛋,B专门从盘子里取鸡蛋。

    如果盘子里有一个鸡蛋,则A不能再往盘子里放;如果盘子里没有鸡蛋,则B不能从盘子里取。

代码:

public class Plate {
    List<Object> eggs = new ArrayList<Object>();
    
    public synchronized Object getEgg() {
        if (eggs.size() == 0) {
            try {
                wait();
            } catch (InterruptedException e) {
            }
        }
        
        Object egg = eggs.get(0);
        eggs.clear();
        notify();  //唤醒阻塞队列中的某线程到就绪队列 
        return egg;
    }
    
    public synchronized void putEgg(Object egg) {
        if (eggs.size() > 0) {
            try {
                wait();
            } catch (InterruptedException e) {
            }
        }
        
        eggs.add(egg);
        notify();  //唤醒阻塞队列中的某线程到就绪队列
    }
}


你可能感兴趣的:(Java生产者消费者模式)