Java ThreadLocal static?
在“线程本地”中设置值:
//Class A holds the static ThreadLocal variable.
Class A{
public static ThreadLocal<X> myThreadLocal = new ThreadLocal<X>();
....
}
//A Class B method sets value in A's static ThreadLocal variable
class B{
{
public void someBmethod(){
X x = new X();
A.myThreadLocal.set(x);
}
}
//Class C retrieves the value set in A's Thread Local variable.
Class C {
public void someCMethod(){
X x = A.myThreadLocal.get();
}
...
}
Quesiton:
现在假设这是一个Web应用程序,线程执行:B.someBMethod,C.someCMethod,按此顺序排列。
执行 B 的 someBMethod 的多个线程最终将更新 SAME A 的静态 ThreadLocal 变量 myThreadLocal,从而击败 ThreadLocal 变量的用途。(根据文档,建议对 ThreadLocal 使用 static。
C的someCMethod,虽然从ThreadLocal检索值,但可能无法获得“当前”线程设置的值。
我在这里错过了什么?