ThreadLocalを試す

↓のようにインスタンスメソッドでも、


public class RequestContextImpl implements RequestContext {

private static ThreadLocal userThl = 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 ThreadLocal userThl = 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);
}
}

どっちでもスレッドごとに正しく値は保持されていた。
どっちがいいかは目的と好みかな?

あと、子スレッドへの値の引継ぎはしないことも確認した。