スレッドローカル
以下の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(); } }