1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| Box:
package com.ProducerNCustomer;
public class Box { //定义一个成员变量,表示第x瓶奶 private int milk; //定义一个成员变量,表示奶箱的状态 private boolean state = false;
//提供存储牛奶和获取牛奶的操作 public synchronized void put(int milk) { //如果有牛奶,等待消费 if(state){ try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } }
//如果没有牛奶,就生产牛奶 this.milk = milk; System.out.println("送奶工将第" + this.milk + "瓶奶放入奶箱");
//生产完毕之后,修改奶箱状态 state = true;
//唤醒其他等待的线程 notifyAll(); }
public synchronized void get() { //如果没有牛奶,等待生产 if(!state){ try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } }
//如果有牛奶,就消费牛奶 System.out.println("用户拿到第" + this.milk + "瓶奶");
//消费完毕之后,修改奶箱状态 state = false;
//唤醒其他等待的线程 notifyAll(); } }
|