【JavaSE】多线程: currentThread()方法

1.currentThread()

静态方法返回正在执行当前方法的线程

getName()和setName()

线程在被创建时,都有自己默认的名字

  • getName()方法: 返回线程的名字
  • setName()方法: 设置线程的名字

 

2.currentThread()方法的使用:

class MyThread extends Thread{
	public MyThread(){
		super();
		// 2
		System.out.println(this.currentThread().getName());
		// 3
		System.out.println(Thread.currentThread().getName());
	}
	 public void run(){
	 	// 4
	 	System.out.println(this.currentThread().getName());
	 	// 5
		System.out.println(Thread.currentThread().getName());
	 }
}

public class Main{
	public static void main(String[] args){
		// 1
		System.out.println(Thread.currentThread().getName());
		MyThread t1 = new MyThread();
		t1.start();
	}
}
// 运行结果
main // 1
main // 2
main // 3
Thread-0 // 4
Thread-0 // 5

首先,执行的顺序是 1–>2–>3–>4–>5。
(1):当前的线程是main,也就是主线程,Thread.currentThread().getaName() 输出主线程的线程名。
 
(2、3):MyThread t1 = new MyThread(); 创建对象,进入 MyThread类的构造方法,依次输出 this.currentThread().getName()、Thread.currentThread().getName(),结果还是main,因为 对象 t1 的创建,以及 start()方法的调用都发生在 main线程中。
 
(4、5):start()方法调用后,t1线程启动,进入 run()方法,依次输出 this.currentThread().getName()、Thread.currentThread().getName(),结果是 Thread-0,因为 run()方法的执行所在的线程是 t1。

可以给主线程设置名字,在main线程中,调用 Thread.currentThread()方法获取主线程main,然后再调用 setName(String name)方法。
public static void main(String[] args){
        Thread.currentThread().setName(“主线程”);
}

 

3.this.currentThread()与Thread.currentThread()

currentThread()方法 是静态方法,可以通过 类. 和 对象. 来调用,
this.currentThread() == Thhread.currentThread()。都是调用父类的 currentThread()方法。但习惯用 Thread.currentThread()。

 
注: 静态方法的使用细节

静态方法可以被继承,不能被重写。同时,静态方法不具有多态性。简单的来说,静态方法属于类。
 
子类可以有和父类一样的静态方法,这时候通过 this.调用的是子类自己的静态方法。而父类的静态方法在子类中被隐藏,需要 通过 super. 或 类. 来调用父类的静态方法。

class A{
	public static void v(){
		System.out.println("类A的静态方法");
	}
}
class B extends A{
	public static void v(){
		System.out.println("类B的静态方法");
	}
	
	public void test(){
		// 子类自己的静态方法
		v(); 
		this.v();
		
		// 父类的静态方法
		super.v();
		A.v();
	}
}
public class Main{
	public static void main(String[] args){
		B b = new B();
		b.v(); // 类 B的静态方法
		A a = new B();
		a.v(); // 类 A的静态方法
		
		b.test();
	}
}
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

り澄忆秋、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值