下面是创建线程局部变量的示例
private static final ThreadLocal<SimpleDateFormat> formatter = new ThreadLocal<SimpleDateFormat>(){
@Override
protected SimpleDateFormat initialValue()
{
return new SimpleDateFormat("yyyyMMdd HHmm");
}
};
还有第二种使用线程本地的方法
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 中加载类时,都会初始化静态变量。这意味着当类加载时创建一个对象。
* *问题:*当不同的线程调用 ThreadLocal 变量上的 Set 或 get 时,threadlocal 对象的副本是如何传递给线程的?*每个线程如何获取自己的对象? 如果在加载类时创建了一个对象,那么这是怎么回事?**