代码如下:
package BoxPack01;public class Box {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();}}
package BoxPack01;public class Producer implements Runnable{private Box b;public Producer(Box b) {this.b = b;}@Overridepublic void run() {for (int i = 1;i<=5;i++){b.put(i);}}
}
package BoxPack01;public class Customer implements Runnable{private Box b;public Customer(Box b) {this.b = b;}@Overridepublic void run() {while(true){b.get();}}
}
package BoxPack01;public class BoxDemo {public static void main(String[] args){Box b = new Box();Producer p = new Producer(b);Customer c = new Customer(b);Thread t1 = new Thread(p);Thread t2 = new Thread(c);t1.start();t2.start();}}