请教多线程中this.getName()和Thread.currentThread().getName()返回名字不一样的问题

ywzxfz 2015-12-05 03:27:38
public class hello extends Thread {
public hello(){
System.out.println("Thread.currentThread().getname()="+Thread.currentThread().getName());
System.out.println("This.getName="+this.getName());
}
public void run(){
System.out.println("Thread.currentThread().getname()="+Thread.currentThread().getName());
System.out.println("This.getName="+this.getName());
}
public static void main(String[] args){
hello thread =new hello();
Thread t1 =new Thread(thread);
t1.setName("A");
t1.start();
}
}
得到结果
Thread.currentThread().getname()=main
This.getName=Thread-0
Thread.currentThread().getname()=A
This.getName=Thread-0
为什么这里是Thread-0,不是应该分别得到两个main和两个A吗
...全文
1427 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33329227 2017-08-04
  • 打赏
  • 举报
回复
这里介绍的很详细:http://www.cnblogs.com/signheart/p/922dcf75dd5fe6b418d4475af89c4664.html
ywzxfz 2015-12-05
  • 打赏
  • 举报
回复
万分感谢!!!!!好热心啊 帮我解决了一个一直搞不懂的问题
  • 打赏
  • 举报
回复
hello thread = new hello();
		Thread t1 = new Thread(thread);
		t1.setName("A");
		t1.start();
首先要清楚thread和t1是两个完全不同的对象,他俩之间唯一的关系就是把thread传递给t1对象仅仅是为了让t1调用thread对象的run方法。hello thread = new hello();运行这句话的时候会调用hello的构造方法,Thread.currentThread().getName()是获得调用这个方法的线程的名字,在main线程中调用的当然是main了,而this.getName()这个方法是获取当前hello对象的名字,只是单纯的方法的调用。因为没有重写这个方法所以调用的是父类Thread(把这个对象当作是普通的对象)中的方法。
this.getName()-->public final String getName() {
	return String.valueOf(name);
    }-->所以最终是输出name的值,因为你在hello的构造方法中没有显式调用父类的所以调用的是默认无参的public Thread() {
	init(null, null, "Thread-" + nextThreadNum(), 0);
    }-->最终的名字就是这个"Thread-" + nextThreadNum()-->private static synchronized int nextThreadNum() {
	return threadInitNumber++;
    }-->private static int threadInitNumber;因为是第一次调用nextThreadNum() 方法所以返回值为0-->this.getName()=Thread-0
后面的输出类似。t1.setName("A");这句话只是修改了t1的名字,和thread对象没有关系,所以run方法中this.getName()的输出还是Thread-0。 说的有点啰嗦了

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧