Установка значения в потоке Локальный:
//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 static ThreadLocal variable
class B{
{
public void someBmethod(){
X x = new X();
A.myThreadLocal.set(x);
}
}
//Class C retrieves the value set in A Thread Local variable.
Class C {
public void someCMethod(){
X x = A.myThreadLocal.get();
}
...
}
Quesiton:
Предположим, что это веб-приложение, и выполняются потоки: B.someBMethod, C.someCMethod в этом порядке.
Несколько потоков, выполняющих B someBMethod, завершат обновление SAME статической переменной ThreadLocal myThreadLocal, тем самым опережая саму цель переменной ThreadLocal. (Использование static для ThreadLocal - это то, что рекомендуется в соответствии с документацией.)
C someCMethod при извлечении значения из ThreadLocal может не получить значение, заданное потоком "current".
Что мне здесь не хватает?