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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. System.out.println(Thread.currentThread().getName()+"......生产者...."+this.name);
复制代码


在上面这条代码中,”Thread.currentThread().getName()“这个是什么意思?我知道Thread.currentThread()意思是调用了Thread类中的currentThread方法,那后面的”.getName()“是什么意思呢?”.getName“难道是currentThread方法中的方法?但是查阅API文档发现getName()和currentThread()同是Thread类中的方法,但是为什么这句代码这么写?请求师兄解读,谢谢!

评分

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

查看全部评分

12 个回复

倒序浏览
我想问问CurrentThread方法返回的是什么,当前线程的getName方法。当然如果你知道当前执行的是哪个线程的话也是可以直接调用getName方法的。getName我觉得是你创建的线程的方法。额,我也有点糊涂。等待高人解答。另外能告诉我这是哪部分视频的内容,我想回去重温一下。
回复 使用道具 举报
Thread.currentThread()指的是当前线程,getName()方法是从父类继承过来的。获取名称的。这个可以简写成 this.getName()。
回复 使用道具 举报
Thread.currentThread()返回一个Thread实例,这个Thread实例表示的是当前线程对象;就相当于
Thread currentThread = Thread.currentThread();   // 得到当前线程对象
String name = currentThread.getName();   // 得到当前线程对象的名称
回复 使用道具 举报
小王泽哥 发表于 2015-5-16 16:21
我想问问CurrentThread方法返回的是什么,当前线程的getName方法。当然如果你知道当前执行的是哪个线程的话 ...

谢谢回复!这是毕向东老师生产者和消费者问题
回复 使用道具 举报
同求................
回复 使用道具 举报
kingowe 发表于 2015-5-16 17:52
Thread.currentThread()返回一个Thread实例,这个Thread实例表示的是当前线程对象;就相当于
Thread curre ...

谢谢师兄的详细解答,我不明白的是,我们知道  类.方法() 是代表调用了该类中的该方法,但是现在这条代码中的却是   方法().方法() 我们知道函数内是不能定义另一个函数的,所以对于这条代码的这个写法,我是不太明白的
回复 使用道具 举报
冷月霜飞 发表于 2015-5-17 05:56
谢谢师兄的详细解答,我不明白的是,我们知道  类.方法() 是代表调用了该类中的该方法,但是现在这条代 ...

对于你说的 方法().方法() 这种格式不太明白,就像我给你说的 因为 Thread.currentThread(); 这个方法的返回值又是一个 Thread类,因为这个返回值才可以继续调用getName()这个方法,  所以不是表面上的 “方法().方法() ” 而是 “方法返回值.方法()”, 假如Thread.currentThread();方法返回值为void,那么就不能用你说的 方法().方法() 这种格式了,楼主如果不明白可以向我这样先拆开来写:
Thread currentThread = Thread.currentThread();   // 得到当前线程对象
String name = currentThread.getName();   // 得到当前线程对象的名称

还有给楼主一个我学习这么多年的经验:有不懂的地方,如果不影响后边的学习,那么就先记到记事本中 先放着,等往后学习一段时间,再返回来看看,就完全明白了。千万不要停在一个地方,非要搞懂才继续。这样你会浪费很多时间
回复 使用道具 举报
当出现方法调方法这种格式的时候,你应该知道第一个方法返回的必然是个对象。
回复 使用道具 举报
Thread.currentThread()返回的是当前线程对象,因为currentThread()是静态方法所以直接类名调用
   用返回的对象调用getName()方法,得到当前线程对象的名字,写在一起是简化代码写法
soeasy,多见几次就习惯了
回复 使用道具 举报
kingowe 发表于 2015-5-17 08:13
对于你说的 方法().方法() 这种格式不太明白,就像我给你说的 因为 Thread.currentThread(); 这个方 ...

经过的师兄的解释,现在明白了,多谢师兄!祝顺利!
回复 使用道具 举报
currentThread()是Thread的一个静态方法,它返回当前运行的线程,而getName()则是获取当前线程的字符串表达方式。
回复 使用道具 举报

currentThread()方法返回的是一个Thread,Thread.getName()没什么问题吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马