Java多线程中获取当前线程名字的方法

Java Q&A Hub 使用 GPT-4o-mini 回答

问题:

Java面试题之多线程 在实现Runnable的接口中怎么样访问当前线程对象,比如拿到当前线程的名字?

回答:

在Java中,如果你实现了Runnable接口并希望访问当前线程对象(例如获取当前线程的名字),你可以使用Thread.currentThread()方法。这个方法返回一个对当前执行线程的引用。通过这个引用,你可以调用getName()方法来获取线程的名字。

下面是一个简单的示例,展示了如何在实现Runnable接口的类中访问当前线程的名字:

class MyRunnable implements Runnable {
    @Override
    public void run() {
        // 获取当前线程对象
        Thread currentThread = Thread.currentThread();
        
        // 获取当前线程的名字
        String threadName = currentThread.getName();
        
        // 打印当前线程的名字
        System.out.println("当前线程的名字是: " + threadName);
    }
}

public class Main {
    public static void main(String[] args) {
        // 创建一个Runnable对象
        MyRunnable myRunnable = new MyRunnable();
        
        // 创建线程并传入Runnable对象
        Thread thread1 = new Thread(myRunnable, "线程-1");
        Thread thread2 = new Thread(myRunnable, "线程-2");
        
        // 启动线程
        thread1.start();
        thread2.start();
    }
}

在这个示例中,我们创建了一个实现了Runnable接口的MyRunnable类。在run方法中,我们使用Thread.currentThread()获取当前线程的引用,并通过getName()方法获取线程的名字。然后,我们在main方法中创建并启动了两个线程,每个线程都有自己的名字。运行程序后,你将看到每个线程打印出它自己的名字。