package itheima007; 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 itheima007; public class Customer implements Runnable{ private Box b; public Customer(Box b) { this.b = b; } @Override public void run() { while (true){ b.get(); } } }
package itheima007; public class Producer implements Runnable{ private Box b; public Producer(Box b) { this.b = b; } @Override public void run() { for(int x=1;x<=5;x++){ b.put(x); } } }
package itheima007; public class Demo { public static void main(String[] args) { Box b=new Box(); Customer c=new Customer(b); Producer p=new Producer(b); Thread th1=new Thread(c); Thread th2=new Thread(p); th1.start(); th2.start(); } }