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