/* 生产者消费者模型 */ class Resource { private String name; private int count = 1; private boolean flag = false; public synchronized void set(String name) { while(flag)//多次判断循环 try{this.wait();}catch(Exception e){} this.name = name + "--" + count++; System.out.println(Thread.currentThread().getName()+"...生产者..."+this.name); flag = true; this.notifyAll(); } public synchronized void out() { while(!flag)//多次判断循环 try{this.wait();}catch(Exception e){} System.out.println(Thread.currentThread().getName()+"...消费者..."+this.name); flag = false; this.notifyAll();//为了唤醒对方线程 } } class Producer implements Runnable { private Resource res ; Producer(Resource res) { this.res = res; } public void run() { while(true) { res.set("+商品+"); } } } class Consumer implements Runnable { private Resource res ; Consumer(Resource res) { this.res = res; } public void run() { while(true) { res.out(); } } } class ThreadDemo { public static void main(String[] args) { Resource res = new Resource(); Producer pro = new Producer(res); Consumer con = new Consumer(res); Thread t1 = new Thread(pro); Thread t2 = new Thread(pro); Thread t3 = new Thread(con); Thread t4 = new Thread(con); t1.start(); t2.start(); t3.start(); t4.start(); } }