スレッドローカルは便利なクラスです。 いつでもどこでもスレッドセーフなグローバル変数を定義することができます。 ごく稀にですが、スレッドローカルを使わないと解決できない問題もあるでしょう。 しかし、思うのです。スレッドローカルを使うのは基本的に「負け」なのだと。 例えば 例えば、こんなコードがあったとします。 public class FooAction implements WebAction { // 入力フォームのバリデーションを行う。 @Override public void validate(Form form) throws ValidationException { if (form.get("name") == null) { throw new ValidationException("name is null"); } if (form.getInt("age") <