ThreadLocal 変数はいつ、どのように使用すればよいですか? 質問する

ThreadLocal 変数はいつ、どのように使用すればよいですか? 質問する

いつ使うべきか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);
    }
}

ドキュメンテーション

おすすめ記事