有没有办法更改已启动线程的名称



有没有办法更改已启动Thread的名称,或者Thread.setName(String name)仅在线程初始化块中可用?

该函数称为 setName(字符串名称);

Thread t = new Thread(...);
t.start();
t.setName("...");

您可以在代码的任何部分设置它,只要 SecurityManager 允许它。

线程

名称可以在实例化 Thread 对象时设置,也可以在事后使用 Thread.currentThread().setName

public class NamedThreadExample implements Runnable {
  public static final String THREAD_NAME_GOES_HERE = "Original Name";
  public static final String NEW_THREAD_NAME_GOES_HERE = "New Name";
  public void run() {
    System.out.println("I am a Thread and my name is " 
                        + Thread.currentThread().getName());
    Thread.currentThread().setName(NEW_THREAD_NAME_GOES_HERE);
    System.out.println("I am a Thread and my name is " 
                        + Thread.currentThread().getName());
  }
  public static void main(String args[]) {
    (new Thread(new NamedThreadExample(), THREAD_NAME_GOES_HERE)).start();
  }
}

产生输出

I am a Thread and my name is Original Name
I am a Thread and my name is New Name

请参阅 http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thread.html#Thread%28java.lang.Runnable,%20java.lang.String%29

最新更新