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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李平 初级黑马   /  2012-4-18 19:28  /  1698 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在线程的例子中:

System.out.println(this.getName()+"  Thread run---"+x);

System.out.println(Thread.currentThread().getName()+"Thread run---"+x);
这两种调用getName()的输出都可以,有什么具体点区别没有?
用 this 好还是 Thread.currentThread() 好一点?

5 个回复

正序浏览
可以分两种情况讨论:
1:如果线程是通过继承Thread类来实现的,那么Thread.currentThread()和this是相同的,即Thread.currentThread()==this的结果是true,是没有区别的。
2:如果线程是通过实现Runnable接口实现的,此时的this是指实现了Runnable接口的那个对象,而Thread.currentThread()是当前线程,此时两者就不一样了,
当前线程用于调用当前对象的一些方法来实现某些操作。
回复 使用道具 举报
可以分两种情况讨论:
1:如果线程是通过继承Thread类来实现的,那么Thread.currentThread()和this是相同的,即Thread.currentThread()==this的结果是true,是没有区别的。
2:如果线程是通过实现Runnable接口实现的,此时的this是指实现了Runnable接口的那个对象,而Thread.currentThread()是当前线程,此时两者就不一样了,
当前线程用于调用当前对象的一些方法来实现某些操作。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1 赞一个!

查看全部评分

回复 使用道具 举报
System.out.println(this.getName()+"  Thread run---"+x);

System.out.println(Thread.currentThread().getName()+"Thread run---"+x);


this.getName()这边的表示的是getName()所在方法的调用者;

Thread.currentThread().getName()表示的是返回当前执行线程对象的引用也就是但前执行的线程;
回复 使用道具 举报
Thread.currentThread()返回对当前正在执行的线程对象的引用,而this也是对正在执行的线程对象的引用,应该没什么区别,只是获取的方式不同吧
回复 使用道具 举报
currentThread()方法是Thread类的静态方法,该方法总是返回当前正在执行的线程对象的名字。getName()是实例方法,返回调用该方法的线程的名字。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马