黑马程序员技术交流社区

标题: 多线程问题 [打印本页]

作者: 不冬眠的蚂蚁    时间: 2014-1-16 13:25
标题: 多线程问题
毕老师的生产者 与消费者问题
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();

        }
}

给说说 他们中的参数的意义 ,就是对这些参数有点不懂
作者: 黄晓鑫    时间: 2014-1-16 14:19
参数就是资源 把资源作为参数传递进去就等于有了这个对象的引用 然后用这个引用可以调用资源对象里面的方法 由于你创建的是一个资源对象.所以资源就是唯一的.比如一个国家只有一个主席.那他就只是一个而不是俩个.所以这个资源对象是共享的.
作者: Unicorn319    时间: 2014-1-16 17:29
上面的代码中有三个参数(实例的引用)r pro con
参数的用处要从类的功能说起:
Resource是资源类对象 代表商品
Producer是生产者的对象 收到一个资源类对象后,负责在其中生产“商品”
Consumer是消费者的对象 收到一个资源类对象后,负责在其中消耗“商品”
之后定义的线程功能就是单另启动一个线,至于是“生产线”还是“消费渠道”,取决于传入的参数是pro还是con

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

不知道这么说是否能回答你的问题?
作者: mrwise1991    时间: 2014-1-16 19:02
它们在创建新对象时,调用的构造函数的参数为对象,传参的时候传递的是对象的引用
作者: pray    时间: 2014-4-26 00:44
那就好好玩吧~~~~




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