以下は、スレッド ローカル変数を作成する例です。
private static final ThreadLocal<SimpleDateFormat> formatter = new ThreadLocal<SimpleDateFormat>(){
@Override
protected SimpleDateFormat initialValue()
{
return new SimpleDateFormat("yyyyMMdd HHmm");
}
};
また、スレッドローカルを使用する2番目の方法
public class MyThreadLocal {
public static final ThreadLocal userThreadLocal = new ThreadLocal();
public static void set(Context user) {
userThreadLocal.set(user);
}
public static void unset() {
userThreadLocal.remove();
}
public static Context get() {
return userThreadLocal.get();
}
}
さて、以下の行はスレッドローカル変数を作成し、それは静的です。
public static final ThreadLocal userThreadLocal = new ThreadLocal();
クラスが JVM にロードされるたびに、静的変数が初期化されます。つまり、クラスがロードされると、1 つのオブジェクトが作成されます。
* *質問: *異なるスレッドが ThreadLocal 変数で Set または get を呼び出す場合、threadlocal オブジェクトのコピーはどのようにスレッドに渡されますか? *各スレッドが独自のオブジェクトを取得する方法は? クラスのロード時に 1 つのオブジェクトが作成された場合、これはどのように発生しますか?**