public class ProducerConsumer{ public static void main(String[] args){ SyncStack ss = new SyncStack(); Producer p = new Producer(ss); Consumer c = new Consumer(ss); Thread t1 = new Thread(p); Thread t2 = new Thread(c); t1.start(); t2.start(); } } class WoTou{ int id; WoTou(int id){ this.id = id; } public String toString(){ return "WoTou:" + id; } } class SyncStack{ int index = 0; WoTou[] arrayWT = new WoTou[8]; public synchronized void push(WoTou wt){ while(index == arrayWT.length){ try{ this.wait(); } catch(InterruptedException e){ e.printStackTrace(); } } this.notify(); arrayWT[index] = wt; index++; } public synchronized WoTou pop(){ while(index == 0){ try{ this.wait(); } catch(InterruptedException e){ e.printStackTrace(); } } this.notify(); index--; return arrayWT[index]; } } class Producer implements Runnable{ SyncStack ss = null; Producer(SyncStack ss){ this.ss = ss; } public void run(){ for(int i=0;i<20;i++){ WoTou wt = new WoTou(i); ss.push(wt); System.out.println("生产了" + wt); } } } class Consumer implements Runnable{ SyncStack ss = null; Consumer(SyncStack ss){ this.ss = ss; } public void run(){ for(int i=0;i<20;i++){ WoTou wt = ss.pop(); System.out.println("消费了" + wt); } } }
来源:https://www.cnblogs.com/yxfyg/p/12424692.html