ThreadLocal有个缺陷,在子线程里无法访问父线程的变量,
InheritableThreadLocal 解决了这个问题,自动会把父线程的变量传递个子线程,
子线程只能用,修改了不会影响父线程的 东西
InheritableThreadLocal 解决了这个问题,自动会把父线程的变量传递个子线程,
子线程只能用,修改了不会影响父线程的 东西
public class Test {
private final static InheritableThreadLocal<String> holder = new InheritableThreadLocal<String>();
public static void main(String[] args){
holder.set("aaa");
System.out.println("begin=" + holder.get());
Thread a = new Thread(){
public void run() {
System.out.println("thread-begin=" + holder.get());
holder.set("vvvvvvvvvvvvv");
System.out.println("thread-end=" + holder.get());
}
};
a.start();
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("end=" + holder.get());