如果我调用Thread.currentThread().getId()
,则会得到一个代表当前线程ID的长整数。
我正在使用正在编写的SessionContext类中的用户ID映射使用线程ID。当用户对后端进行API调用时,我将当前的threadId与他们的userId进行存储,因此在任何时候我都可以调用SessionContext.getUserId(),它将使用threadId将我映射回该用户。但是,如果Thread.currentThread().getId()
的结果在堆栈中的任何点更改,则此方法将不起作用。
我的问题是,此ID在整个堆栈中都将保持不变吗?
最佳答案
The documentation非常清楚:
返回此线程的标识符。线程ID是创建此线程时生成的正整数。线程ID是唯一的,并且在其生命周期内保持不变。当线程终止时,可以重新使用该线程ID。
我认为这是id的全部要点-它在整个生命周期中都保持不变。