1. ホーム
  2. java

[解決済み] ThreadLocal変数はいつ、どのように使用すればよいですか?

2022-03-21 13:57:24

質問

を使用する必要があります。 ThreadLocal という変数があります。

どのように使用するのですか?

解決方法は?

よくある使い方として、スレッドセーフでないオブジェクトがある場合、そのオブジェクトがスレッドセーフにならないようにするために 同期 は、そのオブジェクトにアクセスすることができます(私はあなたを見ている。 SimpleDateFormat ). その代わり、各スレッドにそのオブジェクトのインスタンスを与えてください。

例えば

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);
    }
}

ドキュメンテーション .