package hub;
/*为啥不同线程中的ThreadLocal是互相独立的。 明明是同一个thread对象
-
打印出来的结果 在主线程里面是var2 ,在thread线程中是var1
*/
public class ThreadLocalUsage extends Thread {
public User user = new User();public User getUser() {
return user;
}@Override
public void run() {
this.user.set("var1");while (true) { try { sleep(1000); } catch (InterruptedException e) { } System.out.println(this.user.get()); }
}
public static void main(String[] args) {
ThreadLocalUsage thread = new ThreadLocalUsage(); thread.start(); try { sleep(4000); } catch (InterruptedException e) { } thread.user.set("var2"); System.out.println(thread.user.get());
}
}
class User {
private static ThreadLocal<Object> enclosure = new ThreadLocal<Object>(); // is it must be static?
public void set(Object object) {
enclosure.set(object);
}
public Object get() {
return enclosure.get();
}
}
上面这个代码明明是一个thread对象,怎么打印出来的threadlocal的值不一样,也就是代表不是同一个threadlocal