ThreadLocalを試す
↓のようにインスタンスメソッドでも、
public class RequestContextImpl implements RequestContext {
private static ThreadLocaluserThl = new ThreadLocal () {
@Override
protected User initialValue() {
return new User();
}
};public User getUser() {
return userThl.get();
}public void setUser(User user) {
userThl.set(user);
}
}
↓のようにstaticアクセスでも、
public class RequestContextImpl2 {
private static ThreadLocaluserThl = new ThreadLocal () {
@Override
protected User initialValue() {
return new User();
}
};public static User getUser() {
return userThl.get();
}public static void setUser(User user) {
userThl.set(user);
}
}
どっちでもスレッドごとに正しく値は保持されていた。
どっちがいいかは目的と好みかな?
あと、子スレッドへの値の引継ぎはしないことも確認した。