黑马程序员技术交流社区
标题:
多线程的Thread.currentThread和this有什么区别吗?
[打印本页]
作者:
杨长川
时间:
2013-3-27 09:28
标题:
多线程的Thread.currentThread和this有什么区别吗?
本帖最后由 杨长川 于 2013-3-27 13:31 编辑
class Test extends Thread
{
Test(String name)
{
super(name);
}
public void run()
{
for(int x=0; x<60; x++)
{
System.out.println((Thread.currentThread()==this)+".."+this.getName()+"run.."+x); //Thread.currentThread()跟this在使用上有什么区别吗?
}
}
}
class ThreadTest
{
public static void main(String[] args)
{
Test t1 = new Test("one---");
Test t2 = new Test("two+++");
t1.start();
t2.start();
for(int x=0; x<60; x++)
{
System.out.println("main"+x);
}
}
}
复制代码
除了Thread.currentThread()是通用外还有什么区别吗?
作者:
罗胜华
时间:
2013-3-27 09:43
其实你要理解 this关键字的作用,,这样跟你说吧,this就是代表当前调用方法的一个引用
拿你上面的代码为例:
谁会执行run()方法,当然是你创建的两个对象t1和t2,那么当t1.start()的时候,this就代表t1这个对象的引用。同理:t2也一样
而thread.currentThread(),就是获取当前线程。
作者:
HM谢文辉
时间:
2013-3-27 09:49
都是获得当前线程。继承Thread类获得当前线程对象可以用Thread.currentThread()和this。但实现Runnable接口来获得当前线程对象必须使用Thread.currentThread()。
作者:
yufeng47
时间:
2013-3-27 11:26
HM谢文辉 发表于 2013-3-27 09:49
都是获得当前线程。继承Thread类获得当前线程对象可以用Thread.currentThread()和this。但实现Runnable接口 ...
支持该回复。
run方法有可能处于Runnable类中,Runnable接口中只有run方法一个,没有其他方法,由其他线程直接调用run方法执行任务,用this此种情况下就无法调用Thread类中的其他方法。
作者:
陈丽莉
时间:
2013-3-27 11:45
若还有问题,继续追问; 没有的话,尽量及时将帖子分类改成【已解决】~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2