ThreadLocal を作成し、それを new ThreadLocal で初期化するという問題が発生しています。問題は、概念的には、スレッドの寿命が続く永続的なリストが必要なだけですが、Java でスレッドごとに何かを初期化する方法があるかどうかわかりません。
たとえば、私が欲しいのは次のようなものです:
ThreadLocal static {
myThreadLocalVariable.set(new ArrayList<Whatever>());
}
スレッドごとに初期化するようにします。私はこれを行うことができることを知っています:
private static Whatever getMyVariable() {
Whatever w = myThreadLocalVariable.get();
if(w == null) {
w = new ArrayList<Whatever>();
myThreadLocalVariable.set(w);
}
return w;
}
しかし、使用するたびにチェックする必要はありません。ここでできることはありますか?