黑马程序员技术交流社区

标题: Thread.getName()和Thread.currentThread().getName()的区别 [打印本页]

作者: 一叶障目    时间: 2014-11-4 12:16
标题: Thread.getName()和Thread.currentThread().getName()的区别
Thread.getName()和Thread.currentThread().getName()的区别?
作者: 桃华月禅    时间: 2014-11-4 19:40
= =getName()是非静态的,必须对象才能调用...类名不能调用
作者: OnlyStyle    时间: 2014-11-4 19:53
应该是静态和非静态的区别吧。
作者: 黄宽    时间: 2014-11-4 22:18
楼主的问题本身就有问题啊,Thread.getName()好像不允许的哦,只见过this.getName()和Thread.currentThread().getName()
作者: 一叶障目    时间: 2014-11-4 22:20
桃华月禅 发表于 2014-11-4 19:40
= =getName()是非静态的,必须对象才能调用...类名不能调用

抱歉,没有说清楚,那个我想问的是两个方法产生的结果的区别?
作者: 一叶障目    时间: 2014-11-4 22:22
黄宽 发表于 2014-11-4 22:18
楼主的问题本身就有问题啊,Thread.getName()好像不允许的哦,只见过this.getName()和Thread.currentThread ...

恩,是的,那两个方法的结果区别在哪,我看了半天都没弄懂
作者: 黄宽    时间: 2014-11-4 22:43
一叶障目 发表于 2014-11-4 22:22
恩,是的,那两个方法的结果区别在哪,我看了半天都没弄懂

用Thread.currentThread().getName()肯定不会出错,用this.getName()可能会出错。当线程类继承了Thread类时,直接可以用this获取当前线程。Thread.currentThread().getName()这个是通用的,绝对不会错的、你线程类实现Runnable接口也可以用这个取得当前线程名!
作者: 戏言丶    时间: 2014-11-5 01:38
一个是静态方法一个是非静态方法,currentThread()返回的是当前的对象,相当于this对象。但是一般当前函数主体并不是在该线程类中,所以你用this并不可行,除非你知道是哪个线程的,利用它的对象名进行getName(),但是这种很少出现,所以通用的做法还是用Thread的静态方法currentThread()
作者: 一叶障目    时间: 2014-11-5 15:43
戏言丶 发表于 2014-11-5 01:38
一个是静态方法一个是非静态方法,currentThread()返回的是当前的对象,相当于this对象。但是一般当前函数 ...

:D嗯嗯,非常感谢,豁然开朗啦
作者: 一叶障目    时间: 2014-11-5 15:44
黄宽 发表于 2014-11-4 22:43
用Thread.currentThread().getName()肯定不会出错,用this.getName()可能会出错。当线程类继承了Thread类 ...

嗯,O(∩_∩)O谢谢




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