Java Thread 类和Runnable 接口详解

一、Thread 类

了解如何使用Thread 类实现多线程之后,继续学习Thread 类实现多线程之后的相关功能及方法。

1、操作线程名称的方法

构造方法(实现 Runnable 接口时候使用)

  • public Thread(Runnable target,String name); 创建线程时设置线程名称。

成员方法:

  • public final void setName(String name); 设置线程的名称。
  • public final String getName(); 获取线程的名称。

Demo 代码示例:

public class TestThread extends Thread{

@Override
public void run() {
    for (int i = 1; i <= 10; i++) {
        System.out.println("我正在编写多线程代码"+ i);
    }
}

//程序主线程 main 线程
public static void main(String[] args) {

    //创建子类对象
    TestThread thread = new TestThread();

    // 设置线程名称
    thread.setName("姚青新创建的线程");

    //调用 start() 方法开启线程
    thread.start();

    for (int i = 1; i <= 10; i++) {
        System.out.println("我正在学习多线程"+ i);
    }

	// 获取线程名称
    System.out.println(thread.getName());
   }
}

运行结果:

2、获取当前正在执行的线程

public static Thread currentThread(); 返回当前正在执行的线程对象

获取当前线程对象:Thread.currentThread(); 

获取当前线程对象名称 :Thread.currentThread().getName();

Demo代码示例:

public class TestThread extends Thread{

@Override
public void run() {
    for (int i = 1; i <= 5; i++) {
        System.out.println("我正在编写多线程代码"+ i);
    }

    // 获取start()方法创建出来的线程对象
    System.out.println(Thread.currentThread());

    // 获取start()方法创建出来的线程对象名称
    System.out.println(Thread.currentThread().getName());
}

public static void main(String[] args) {
    TestThread thread = new TestThread();
    thread.setName("姚青新创建的线程");
    thread.start();
    for (int i = 1; i <= 5; i++) {
        System.out.println("我正在学习多线程"+ i);
    }
    //System.out.println(thread.getName());

    // 获取main()主线程对象名称
    System.out.println(Thread.currentThread().getName());
  }
}

运行结果:

通过运行结果可以发现,在控制台上分别打印出了 “main”、“Thread[姚青新创建的线程,5,main]”、“姚青新创建的线程”,可以看出将新创建的线程对象和对象名称以及主方法的线程名称都打印出来了。
在使用这个方法的时候需要注意一点,该方法固定的写法就是 Thread.currentThread(); 放在那个线程中执行这个方法就是指定的那个线程。

原文地址:https://blog.csdn.net/shiyu_951/article/details/126226538