黑马程序员技术交流社区

标题: 等待 唤醒机制改进版 [打印本页]

作者: 周飞飞    时间: 2015-8-12 14:42
标题: 等待 唤醒机制改进版

//实现生产消费

class Recsource{
        private String name;
        private int count=1;
        private boolean flag;
        public synchronized void set(String name){
                while(flag)
                        try {
                                this.wait();
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                this.name = name+"--"+(count++);
                System.out.println(Thread.currentThread().getName()+".....生产者........"+this.name);
                flag =true;
                this.notifyAll();
        }
        public synchronized void get(){
                while(!flag){
                        try {
                                this.wait();
                        } catch (InterruptedException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
                System.out.println(Thread.currentThread().getName()+".....消费者"+name);
                flag = false ;
                this.notifyAll();
        }
       
}
class Producer implements Runnable{
        private Recsource res;
        Producer(Recsource res){
                this.res = res;
        }
        public void run(){
                while(true){
                        res.set("商品");
                }
               
        }
       
}
class Consumer implements Runnable{
        private Recsource res;
        Consumer(Recsource res){
                this.res = res;
        }
        public void run(){
                while(true){
                        res.get();
                }
               
        }
       
}

public class ProducerConsumerDemo {
        public static void main(String...args){
                Recsource r = new Recsource();
                Producer p = new Producer(r);
                Consumer c = new Consumer(r);
                Thread t1 = new Thread(p);
                Thread t2 = new Thread(c);
                Thread t3 = new Thread(p);
                Thread t4 = new Thread(c);
                t1.start();
                t2.start();
                t3.start();
                t4.start();
        }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2