Java 命名线程

原文:https://www.studytonight.com/java/naming-thread-in-java.php

Java 中的每个线程都有自己的名称,默认情况下由 JVM 设置。虽然有许多其他属性与线程相关联,如:id、优先级等。

我们可以通过调用 thread 类的getName()方法得到一个线程的名字。如果我们希望设置线程的新名称,那么可以使用设置名称()方法。这两种方法都属于 Thread 类,甚至我们可以在创建对象时通过传入构造器来设置线程的名称。让我们通过例子来理解。

下面给出了两种方法的语法。

setName(String name)
getName()

示例:获取线程名称

让我们首先获取 JVM 设置的线程名。这是默认名称,所以最初我们无法预测它。

    public class MyThread extends Thread
{ 

    public void run()
    {
       System.out.println("thread running...");
    }
    public static void main(String[] args)
    {
        MyThread t1=new MyThread();

        t1.start();
        System.out.println("thread name: "+t1.getName());
    }
}

线程运行...线程名称:线程-0

我们也可以使用 Thread 类的静态 currentThread()方法。它返回线程名称、优先级等。它是静态方法,因此不需要对象调用它。见下面的例子。

示例:Thread.currentThread()

在这个例子中,我们使用Thread类的 currentThread 方法来获取线程的名称。

    public class MyThread extends Thread
{ 

    public void run()
    {
       System.out.println("thread running...");
       System.out.println("Thread name: "+Thread.currentThread());
    }
    public static void main(String[] args)
    {
        MyThread t1=new MyThread();

        t1.start();
    }
}

线程运行...线程名称:线程[线程-0,5,主]

示例:设置名称

在这个例子中,我们使用 setName()方法来设置线程的名称,使用 getName()方法来获取线程的名称。

    public class MyThread extends Thread
{ 

    public void run()
    {
       System.out.println("thread running...");
    }
    public static void main(String[] args)
    {
        MyThread t1=new MyThread();
        t1.start();
        t1.setName("mythread");
        System.out.println("Thread Name: "+t1.getName());
    }
}

线程运行...线程名称:神话

示例:使用构造器设置名称

我们可以通过传递构造器来设置线程的名称。允许String类型参数的Thread类构造器可用于设置名称。见下面的例子。

    public class MyThread extends Thread
{ 
    MyThread(String name){
        super(name);
    }

    public void run()
    {
       System.out.println("thread running...");
    }
    public static void main(String[] args)
    {
        MyThread t1=new MyThread("mythread");
        t1.start();
        System.out.println("Thread Name: "+t1.getName());
    }
}

线程运行...线程名称:神话

因为我们扩展了Thread类,所以我们通过超级调用调用它的构造器,并将线程名传递给 MyThread 类。

示例:设置名称

我们可以通过创建Thread类对象直接将线程名传递给构造器。

    public class MyThread implements Runnable
{ 

        public void run()
        {
               System.out.println("thread running...");
        }
        public static void main(String[] args)
        {
                MyThread t1=new MyThread();
                Thread t = new Thread(t1, "mythread");
                t.start();
                System.out.println("Thread Name: "+t.getName());
        }
}

线程运行...线程名称:神话

在本主题中,我们学习了使用getName()currentThread()方法获取线程名称,以及使用 setName()方法设置名称并将名称传递给构造器。