完整堆栈的Java线程ID是否保持不变?

时间:2017-07-06 07:35:22

标签: java java-threads

如果我调用Thread.currentThread().getId(),我会得到一个代表当前线程ID的长整数。

我正在使用线程ID进行我正在编写的SessionContext类中的user-threadId映射。当用户对后端进行API调用时,我将当前的threadId存储在他们的userId中,因此在任何时候我都可以调用SessionContext.getUserId(),它将使用threadId将我映射回用户。但是,如果Thread.currentThread().getId()的结果在堆栈中的任何位置发生更改,则此方法将无效。

我的问题是,这个ID在整个堆栈中是否会保持不变?

1 个答案:

答案 0 :(得分:1)

The documentation非常清楚:

  

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

我认为这是身份证的全部意义 - 它的生命周期保持不变。