第一部
Box类代码
package com.itheima_03; 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(); } }
第二部
Producer类
package com.itheima_03; public class Producer implements Runnable { private Box b; public Producer(Box b) { this.b = b; } @Override public void run() { for (int i=1;i<=5;i++){ b.put(i); } } }
第三部
Customer类
package com.itheima_03; public class Customer implements Runnable{ private Box b; public Customer(Box b) { this.b=b; } @Override public void run() { while(true){ b.get(); } } }
第四部
测试类
package com.itheima_03; 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(); } }