多线程生产者与消费者问题的总结

来源:互联网 发布:淘宝16年扣24分 编辑:程序博客网 时间:2024/05/23 11:57


class Resource{private String name;private int count;private boolean flag;public synchronized void set(String name){while(flag){try {wait();} catch (InterruptedException e) {e.printStackTrace();}}this.name = name+"---"+count++;System.out.println(Thread.currentThread().getName()+"生产者"+this.name);flag = true;notifyAll();}public synchronized void get(){while(!flag){try{wait();}catch(InterruptedException e){e.printStackTrace();}}System.out.println(Thread.currentThread().getName()+"--消费者--"+this.name);flag = false;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.get();}}}public class ProducerConsumer {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(con);Thread t3 = new Thread(pro);Thread t4 = new Thread(con);t1.start();t2.start();t3.start();t4.start();}}