スレッドローカル

以下の2つの条件を満たすとき、そのオブジェクトはスレッドローカルで扱うとよいだろう。

  • スレッド内で複数オブジェクト間で共有されるオブジェクト
  • スレッド間で共有する必要がないオブジェクト

実装例を以下に示す。SharedClassは例えばSqlMapClientだったりするだろう。

abstract class AbstClass {
  private static ThreadLocal<SharedClass> threadLocalSharedClass = new ThreadLocal<SharedClass>(){
    protected synchronized Object initialValue() {
      return new SharedClass();
    }
  };
  
  protected SharedClass getSharedClass() {
    return threadLocalSharedClass.get();
  }
}