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

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

我的问题是,此ID在整个堆栈中都将保持不变吗?

最佳答案

The documentation非常清楚:


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


我认为这是id的全部要点-它在整个生命周期中都保持不变。

10-07 19:49
查看更多