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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

class Resource
{
       
}

class Producer implements Runnable
{
        private Resource res;

        Producer(Resource res)
        {
                this.res = res;
        }
}

class Consumer implements Runnable
{
        private Resource res;

        Consumer(Resource res)
        {
                this.res = res;
        }

}


class ProducerConsumerDemo
{
        public static void main(String[] args)
        {
                Resource r = new Resource();

                Producer pro = new Producer(r);
                Consumer con = new Consumer(r);

                Thread t1 = new Thread(pro);
                Thread t2 = new Thread(con);

                t1.start();
                t2.start();
        }
}

以上是缩减版程序

弱弱的问一句 this.res = res; 有什么用,我是学渣,见笑了。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

14 个回复

倒序浏览
就是赋值操作,this代表的是对象,就是把变量res的值赋给当前对象

评分

参与人数 1黑马币 +3 收起 理由
船长 + 3

查看全部评分

回复 使用道具 举报
清诗纪事 发表于 2014-12-6 17:55
就是赋值操作,this代表的是对象,就是把变量res的值赋给当前对象

可是,这个变量是对象型的啊,相当于this.对象=对象 这是啥意思呢

评分

参与人数 1黑马币 +2 收起 理由
船长 + 2 淡定

查看全部评分

回复 使用道具 举报
好好看面对对象吧,多看几遍。这个东西只可意会不可言传
回复 使用道具 举报
每一个consumer的意思就是一个消费者,消费者要消耗一些原材料(resource),但是你的resource进去了,必须要让消费者接受这个材料,this.res = res 的意思就是给你的材料变成了你自己的材料

评分

参与人数 1技术分 +1 收起 理由
船长 + 1 很给力!

查看全部评分

回复 使用道具 举报 1 0
this ,  就是当前类对象 ,

假设你这个类是叫 Test ,  this就是就是Test

回复 使用道具 举报
Rdw 初级黑马 2014-12-6 19:48:03
7#
this.res, 指的是全局变量,及代表的是Producer.res。而res代表的是该方法的参数,这个this.res=res;是一个赋值操作。即把参数值赋值给对象
回复 使用道具 举报
古都旧城 发表于 2014-12-6 18:27
可是,这个变量是对象型的啊,相当于this.对象=对象 这是啥意思呢

this.name指的是当前对象的name,等号后边那个name是参数列表中的name
回复 使用道具 举报
this代表它所属对象的引用
回复 使用道具 举报
this代表它所属对象的引用
简单说:那个对象调用this所在的函数,this就代表那个对象
谁调用了那个方法(函数),this就是谁
class Producer implements Runnable
{
         private Resource res;

         Producer(Resource res)
         {
                 this.res = res;
         }
}

class ProducerConsumerDemo
{
         public static void main(String[] args)
         {
                 Resource r = new Resource();

                 Producer pro = new Producer(r);
                 Consumer con = new Consumer(r);

                 Thread t1 = new Thread(pro);
                 Thread t2 = new Thread(con);

                 t1.start();
                 t2.start();
         }
}

Producer pro = new Producer(r);
这句话的意思是实例化一个Producer对象, 对象名叫pro,并把r对象当作参数传递给构造函数
这时,pro就是构造函数的调用者,this就是指pro
这样写你应该看地懂
this.res = res; 可以看成
pro.res =res;  

编程别这样写。我只是告诉你两者关系

回复 使用道具 举报 2 0
wangcongwu 发表于 2014-12-6 19:34
每一个consumer的意思就是一个消费者,消费者要消耗一些原材料(resource),但是你的resource进去了,必须 ...

谢谢。。。。。。。。。。。
回复 使用道具 举报
牧歌 中级黑马 2014-12-19 23:56:27
12#
this不是代表当前调用这个属性的对象么?
回复 使用道具 举报
this代表的是本类对象的引用,区别于super代表父类,这个在子父类中需要仔细理解
回复 使用道具 举报
this.res = res   给this代表的对象的资源 赋初值res  。。
回复 使用道具 举报
这里一转,好有收获啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马