いつ使うべきかThreadLocal
変数?
どのように使われますか?
ベストアンサー1
1つの可能な(そして一般的な)使用法は、スレッドセーフではないオブジェクトがあるが、それを避けたい場合です。同期するそのオブジェクトへのアクセス(私はあなたを見ています、シンプルな日付形式) 代わりに、各スレッドにオブジェクトの独自のインスタンスを割り当てます。
例えば:
public class Foo
{
// SimpleDateFormat is not thread-safe, so give one to each thread
private static final ThreadLocal<SimpleDateFormat> formatter = new ThreadLocal<SimpleDateFormat>(){
@Override
protected SimpleDateFormat initialValue()
{
return new SimpleDateFormat("yyyyMMdd HHmm");
}
};
public String formatIt(Date date)
{
return formatter.get().format(date);
}
}