如何在java中给出默认的新线程名称?

Jee*_*ekh 8 java multithreading

当我运行这个程序

public class Fabric extends Thread {
    public static void main(String[] args) {
        Thread t1 = new Thread(new Fabric());
        Thread t2 = new Thread(new Fabric());
        Thread t3 = new Thread(new Fabric());
        t1.start();
        t2.start();
        t3.start();
    }
    public void run() {
        for(int i = 0; i < 2; i++)
        System.out.print(Thread.currentThread().getName() + " ");
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到输出

Thread-1 Thread-5 Thread-5 Thread-3 Thread-1 Thread-3
Run Code Online (Sandbox Code Playgroud)

是否有任何具体原因为什么线程被赋予奇数的名称 - 1,3,5 ...或者它是不可预测的?

Zho*_*gYu 13

new Thread(new Fabric());
Run Code Online (Sandbox Code Playgroud)

由于Fabric是一个线程,你在这里创建了2个线程:)

JDK8代码:

/* For autonumbering anonymous threads. */
private static int threadInitNumber;
private static synchronized int nextThreadNum() {
    return threadInitNumber++;
}
Run Code Online (Sandbox Code Playgroud)

  • @ChetanKinger - 这是有道理的.它还能做什么?选动物名?:) (3认同)
  • 动物名字会很有趣. (2认同)

cop*_*peg 6

除非在创建Thread时指定了名称,否则 Thread名称中的默认数值是递增的值.Fabric延伸Thread,和要传递的Fabric实例来创建另一个螺纹-由此作为处理期间创建2个线程内螺纹计数器递增两次.