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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不冬眠的蚂蚁 中级黑马   /  2014-1-16 13:25  /  1467 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

毕老师的生产者 与消费者问题
class ProducerConsumerDemo
{
        public static void main(String[] args)
        {
                Resource r = new Resource();//资源类对象

                Producer pro = new Producer(r);//实现runable接口,生产者的对象
                Consumer con = new Consumer(r);//实现runable接口,消费者的对象

                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();

        }
}

给说说 他们中的参数的意义 ,就是对这些参数有点不懂

评分

参与人数 1技术分 +1 收起 理由
船长 + 1

查看全部评分

4 个回复

倒序浏览
参数就是资源 把资源作为参数传递进去就等于有了这个对象的引用 然后用这个引用可以调用资源对象里面的方法 由于你创建的是一个资源对象.所以资源就是唯一的.比如一个国家只有一个主席.那他就只是一个而不是俩个.所以这个资源对象是共享的.

评分

参与人数 1技术分 +1 收起 理由
船长 + 1

查看全部评分

回复 使用道具 举报
上面的代码中有三个参数(实例的引用)r pro con
参数的用处要从类的功能说起:
Resource是资源类对象 代表商品
Producer是生产者的对象 收到一个资源类对象后,负责在其中生产“商品”
Consumer是消费者的对象 收到一个资源类对象后,负责在其中消耗“商品”
之后定义的线程功能就是单另启动一个线,至于是“生产线”还是“消费渠道”,取决于传入的参数是pro还是con

那么 毕老师将Resource的对象r传入Producer,就是新建一个生产线pro,并告诉pro开始生产r的商品,
同理,新建一个消费渠道con,并告诉con开始消耗r的商品,
最后,老师建立了两条生产线t1和t2,以及两条消费渠道t3和t4

不知道这么说是否能回答你的问题?

评分

参与人数 1技术分 +1 收起 理由
船长 + 1

查看全部评分

回复 使用道具 举报
它们在创建新对象时,调用的构造函数的参数为对象,传参的时候传递的是对象的引用
回复 使用道具 举报
那就好好玩吧~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马