黑马程序员技术交流社区

标题: 生产者消费者 [打印本页]

作者: 李大伟    时间: 2013-4-19 09:33
标题: 生产者消费者
本帖最后由 李大伟 于 2013-4-19 22:42 编辑

生产者消费者中 、
Consumer2 中,private Resource2 res;        Consumer2(Resource2 res){
                this.res = res;
        } 这两句什么意思,麻烦给解释解释? 是为了使用资源么?
  1. class Consumer2 implements Runnable{
  2.         private Resource2 res;
  3.         Consumer2(Resource2 res){
  4.                 this.res = res;
  5.         }
  6.         public void run(){
  7.                 while(true){
  8.                         
  9.                         try{
  10.                                 res.out();
  11.                         }
  12.                         catch(Exception e){
  13.                                 
  14.                         }
  15.                         }
  16.         }
  17. }
复制代码

作者: 黑马伍哲沂    时间: 2013-4-19 09:42
嗯,是为了使用资源,并且是为了保证不同线程所使用的资源是同一个资源。
这样新建一个对象,分别通过构造函数把同一个对象传进来就可以。
所以,两个实现Runnable的类里面都是这样写的。
也可以使用的单例设计模式,但会稍微麻烦一点。

总之,就是要想办法保证操作的是同一资源,如果不是同一资源,就不存在等待唤醒的问题了。
作者: 庄生晓梦    时间: 2013-4-19 17:33
是为了保证不同线程使用同一个资源。

生产者生产的资源,正是消费者消费的资源;
将资源进行描述,创建资源对象,通过构造函数传入。
不同线程要操作同一资源。
作者: lipingan0520    时间: 2013-4-19 17:47
本帖最后由 lipingan0520 于 2013-4-19 17:49 编辑
  1. private Resource2 res
复制代码
说的是定义一个Resource2 类类型的变量 res
  1. Consumer2(Resource2 res){
  2.                 this.res = res;//这是Consumer2类中的一个构造方法,目的是在创建Consumer2类对象时传入参数,进行初始化。
复制代码

作者: 伊廷文    时间: 2013-4-19 19:05
是为了使用资源,通过构造函数将共享资源对象传进来




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