代码示例:

package Donglizijie.com.wkcto.threadmehtod;

/**
* @Author: 从南到北
* @Date: 2022/01/03/19:59
*
*/
public class SubThread2 extends Thread{

public SubThread2(){
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());
}
}

测试代码

package Donglizijie.com.wkcto.threadmehtod;

/**
* @Author: 从南到北
* @Date: 2022/01/03/20:03
*/
public class Test02CurrentThread {
public static void main(String[] args) throws InterruptedException {
//创建子线程对象
SubThread2 t2 = new SubThread2();

t2.setName("t2"); //设置线程名称
t2.start(); //start启动,执行run方法

Thread.sleep(500); //main线程休眠500秒
//Thread(Runnable)构造方法形参是 Runnable 接口,调用时传递的实参是接口的[实现类对象]

Thread t3 = new Thread(t2);
// t3.setName("t3");
t3.start();

}
}

运行结果:

P7 currentThread()的一个复杂案例_ide

重点分析点:

P7 currentThread()的一个复杂案例_多线程_02

P7 currentThread()的一个复杂案例_java_03


P7 currentThread()的一个复杂案例_构造方法_04

一个程序至少执行两个线程,
main和垃圾回收机制
所以,通过重写runnable方法实现多线程的,需要创建线程对象即下面这个步骤

P7 currentThread()的一个复杂案例_构造方法_05

this是指的当前对象

参考链接:

​https://www.bilibili.com/video/BV1Rv411y7MU?p=7​

​实现多线程的两种方法​