package producerAndCustomer; import java.util.ArrayList; import java.util.List; public class Plate { private List<Object> apples = new ArrayList<Object>(); public synchronized void putApple(Object apple){ if(apples.size()>0){ try { wait(); } catch (InterruptedException e) { // TODO: handle exception e.printStackTrace(); } } apples.add(apple); notify(); System.out.println("放了一个苹果"); } public synchronized void getApple(){ if(apples.size()==0){ try { wait(); } catch (InterruptedException e) { // TODO: handle exception e.printStackTrace(); } } Object apple = apples.get(0); apples.clear(); notify(); System.out.println("get了一个红苹果"); } }
package producerAndCustomer; public class Add implements Runnable { private Plate applePlate; private Object apple = new Object(); public Add(Plate applePlate){ this.applePlate = applePlate; } @Override public void run() { // TODO Auto-generated method stub for(int i = 0 ;i<5;i++){ applePlate.putApple(apple); } } }
package producerAndCustomer; public class Get implements Runnable { private Plate applePlate; public Get(Plate applePlate){ this.applePlate = applePlate; } @Override public void run() { // TODO Auto-generated method stub for(int i=0;i<5;i++){ applePlate.getApple(); } } }
package producerAndCustomer; public class SynchroTest { public static void main(String args[]){ Plate myPlate = new Plate(); new Thread(new Get(myPlate)).start(); new Thread(new Add(myPlate)).start(); } }