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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Thread.getName()和Thread.currentThread().getName()的区别?

评分

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

查看全部评分

9 个回复

倒序浏览
= =getName()是非静态的,必须对象才能调用...类名不能调用
回复 使用道具 举报 1 0
应该是静态和非静态的区别吧。
回复 使用道具 举报
楼主的问题本身就有问题啊,Thread.getName()好像不允许的哦,只见过this.getName()和Thread.currentThread().getName()
回复 使用道具 举报
桃华月禅 发表于 2014-11-4 19:40
= =getName()是非静态的,必须对象才能调用...类名不能调用

抱歉,没有说清楚,那个我想问的是两个方法产生的结果的区别?
回复 使用道具 举报
黄宽 发表于 2014-11-4 22:18
楼主的问题本身就有问题啊,Thread.getName()好像不允许的哦,只见过this.getName()和Thread.currentThread ...

恩,是的,那两个方法的结果区别在哪,我看了半天都没弄懂
回复 使用道具 举报
黄宽 中级黑马 2014-11-4 22:43:19
7#
一叶障目 发表于 2014-11-4 22:22
恩,是的,那两个方法的结果区别在哪,我看了半天都没弄懂

用Thread.currentThread().getName()肯定不会出错,用this.getName()可能会出错。当线程类继承了Thread类时,直接可以用this获取当前线程。Thread.currentThread().getName()这个是通用的,绝对不会错的、你线程类实现Runnable接口也可以用这个取得当前线程名!
回复 使用道具 举报
一个是静态方法一个是非静态方法,currentThread()返回的是当前的对象,相当于this对象。但是一般当前函数主体并不是在该线程类中,所以你用this并不可行,除非你知道是哪个线程的,利用它的对象名进行getName(),但是这种很少出现,所以通用的做法还是用Thread的静态方法currentThread()

评分

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

查看全部评分

回复 使用道具 举报
戏言丶 发表于 2014-11-5 01:38
一个是静态方法一个是非静态方法,currentThread()返回的是当前的对象,相当于this对象。但是一般当前函数 ...

:D嗯嗯,非常感谢,豁然开朗啦
回复 使用道具 举报
黄宽 发表于 2014-11-4 22:43
用Thread.currentThread().getName()肯定不会出错,用this.getName()可能会出错。当线程类继承了Thread类 ...

嗯,O(∩_∩)O谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马