Thread.currentThread.getName()和this.getName()的区别

在线程中,Thread.currentThread调用的是当前代码块是由哪个线程执行的,而this则表示当前语句是由哪个对象调用执行的,具体看实例吧。

public class ThreadTest5 {
	public static void main(String[] args) {
		MyThread5 t = new MyThread5();
		t.setName("我是t");
		Thread tt= new Thread(t);
		tt.setName("我是tt");
		//t.start();
		tt.start();
	}
}
class MyThread5 extends Thread {
	public MyThread5() {
		System.out.println("构造器中Thread.currentThread().getName:"+Thread.currentThread().getName());
		System.out.println("构造器中this.getName:"+this.getName());
	}
	@Override
	public void run() {
		System.out.println("run中Thread.currentThread().getName()"+Thread.currentThread().getName());
		System.out.println("run中this.getName()"+this.getName());
	}
}

在这里插入图片描述
首先new了一个MyThread5对象,是由当前主线程创建的,所以Thread.currentThread().getName的结果为main,而this则表示的是当前哪个对象调用的这方法,此时这个线程才刚刚构造还没名字,会给个名字,所以输出结果为Thread-0。
在这里插入图片描述
而当我们调用tt.start方法时,就会执行run方法,此时输出currentThread().getName的结果为tt显然没啥疑问,但是this.getName()为啥是t,这是因为,Thread tt= new Thread(t);
传了一个t的参数加入,实际上,这个参数是个target类型的参数。
在这里插入图片描述
在内部实际上是重写了run方法,然后执行target.run()方法,所以在tt的run方法中实际上是调用了target.run方法,因此当前的对象是target,也就是传进去的t。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值