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()方法设置名称并将名称传递给构造器。