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

时间:2012-06-02 18:45:05

标签: java multithreading

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

3 个答案:

答案 0 :(得分:8)

该函数名为setName(String name);

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

答案 1 :(得分:6)

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

答案 2 :(得分:0)

在实例化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