package Tread; public class TestProduce { public static void main(String[] args) { Systack sy = new Systack(); Shengchan sc = new Shengchan(sy); XiaoFei xf = new XiaoFei(sy); new Thread(xf).start(); new Thread(sc).start(); } } class ManTou { int id; ManTou(int x) { id = x; } public ManTou() { // TODO Auto-generated constructor stub } } class Systack { int index = 0; ManTou[] mt = new ManTou[10]; public synchronized void push(ManTou m) { while (index == mt.length) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify(); mt[index] = m; index++; } public synchronized ManTou pop() { while (index == 0) { try { this.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } this.notify(); index--; return mt[index]; } } class XiaoFei implements Runnable { Systack sc = null; @Override public void run() { for (int i = 0; i < 20; i++) { ManTou m = sc.pop(); System.out.println("吃馒头"); } } public XiaoFei(Systack sc) { super(); this.sc = sc; } } class Shengchan implements Runnable { Systack sc = null; @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println("造馒头"); ManTou mt = new ManTou(i); sc.push(mt); } } public Shengchan(Systack sc) { super(); this.sc = sc; } }