黑马程序员技术交流社区

标题: 线程中的一个小问题 [打印本页]

作者: 李平    时间: 2012-4-18 19:28
标题: 线程中的一个小问题
在线程的例子中:

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

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

作者: 刘旭    时间: 2012-4-18 19:51
currentThread()方法是Thread类的静态方法,该方法总是返回当前正在执行的线程对象的名字。getName()是实例方法,返回调用该方法的线程的名字。
作者: liuyang    时间: 2012-4-18 20:08
Thread.currentThread()返回对当前正在执行的线程对象的引用,而this也是对正在执行的线程对象的引用,应该没什么区别,只是获取的方式不同吧
作者: 孙国军    时间: 2012-4-18 20:22
System.out.println(this.getName()+"  Thread run---"+x);

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


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

Thread.currentThread().getName()表示的是返回当前执行线程对象的引用也就是但前执行的线程;
作者: 黑马—王宁    时间: 2012-4-18 21:54
可以分两种情况讨论:
1:如果线程是通过继承Thread类来实现的,那么Thread.currentThread()和this是相同的,即Thread.currentThread()==this的结果是true,是没有区别的。
2:如果线程是通过实现Runnable接口实现的,此时的this是指实现了Runnable接口的那个对象,而Thread.currentThread()是当前线程,此时两者就不一样了,
当前线程用于调用当前对象的一些方法来实现某些操作。
作者: 黑马—王宁    时间: 2012-4-18 21:56
可以分两种情况讨论:
1:如果线程是通过继承Thread类来实现的,那么Thread.currentThread()和this是相同的,即Thread.currentThread()==this的结果是true,是没有区别的。
2:如果线程是通过实现Runnable接口实现的,此时的this是指实现了Runnable接口的那个对象,而Thread.currentThread()是当前线程,此时两者就不一样了,
当前线程用于调用当前对象的一些方法来实现某些操作。





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