Java ThreadLocal statyczny?
Ustawianie wartości w wątku lokalnym:
//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:
Zakładając, że jest to aplikacja internetowa, a wątki są wykonywane: B.someBMethod, C.someCMethod w tej kolejności.
Wiele wątków wykonujących someBMethod B zakończy aktualizacjęPODOBNIE A statyczna zmienna ThreadLocal myThreadLocal, pokonując tym samym cel zmiennej ThreadLocal. (Używanie funkcji static dla ThreadLocal jest zalecane zgodnie z dokumentacją).
SomeCMethod C, podczas pobierania wartości z ThreadLocal może nie uzyskać wartości ustawionej przez wątek „bieżący”.
Czego mi tu brakuje?