有没有办法改变启动的Thread的名字?

有没有办法改变启动的Thread的名字?

问题描述:

有没有办法改变开始的ThreadThread.setName(String name)的名称只能在线程初始化块中使用?有没有办法改变启动的Thread的名字?

+0

发生了什么事,当你试过了吗?当你阅读Javadoc时发生了什么? – EJP

您可以在您的代码的任何部分仍然有引用原始线程,并且只要SecurityManager允许它。

该函数被称为setName(String name);

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

线程名称可以使用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(); 
    } 
} 

事实产生输出后也实例化Thread对象时设置

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

+0

这个答案如何与更改线程名称后的线程名称相关? – Polygnome