在多线程中,getId方法如何决定任何线程的ID

时间:2016-09-23 06:35:17

标签: java multithreading

Thread.currentThread()。getId()返回线程ID,但是线程id是由编译器决定的。也有任何方式为特定的线程设置ID。因为没有像setId

这样的方法

1 个答案:

答案 0 :(得分:2)

在java 8中,线程ID在构造线程时顺序分发(取自Thread的实现):

private static synchronized long nextThreadID() {
    return ++threadSeqNumber;
}

作为Thread.getId()州的API文档,该ID被承诺在其生命周期内是唯一且不变的:

  

返回此Thread的标识符。线程ID是肯定的    创建此线程时生成的长数字。    线程ID是唯一的,并且在其生命周期内保持不变。    当线程终止时,可以重用该线程ID。

因此无法更改线程ID,允许更改ID会违反此规定。