A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Demo{
        public static void main(String[] args){
                Resource r = new Resource();
                Producer p = new Producer(r);
                Consumer c = new Consumer(r);
                Thread t1 = new Thread(p);
                Thread t2 = new Thread(c);
                t1.start();
                t2.start();
        }
}
class Resource {
        String name;
        int count = 1;
        boolean flag = true;
        public void set(String name){
                while(true){
                        if(flag){
                                synchronized(this){
                                        this.name = name+count++;
                                        System.out.println(Thread.currentThread().getName()+this.name+"....."+"生产");
                                        flag = false;
                                }
                        }
                }
        }
        public void out(){
                while(true){
                        if(!flag){
                                synchronized(this){
                                        System.out.println(Thread.currentThread().getName()+name+"..."+"消费");
                                        flag = true;
                                }
                        }
                }
        }
}
class Producer implements Runnable{
        private Resource r;
        Producer(Resource r){
                this.r = r;
        }
        public void run(){
                r.set("商品");
        }
}
class Consumer implements Runnable{
        private Resource r;
        Consumer(Resource r){
                this.r = r;
        }
        public void run(){
                r.out();
        }
}

9 个回复

倒序浏览
高昌德 发表于 2015-5-6 14:03
还没有写完就一部小心提交了,,,
首先flag是true,set方法先执行了一遍,把flag置为了false,循环回来 ...

谢谢    明白了     
回复 使用道具 举报
wkz_crystal 发表于 2015-5-6 15:13
晕倒,逻辑错误了,兄弟!你得目的是要让生产者和消费者都能够跑起来,那样的就话就要让set方法和out方法都 ...

谢了   兄弟      其实我纠结的是程序为什么停掉。    你的思考方法很值得学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马