ThreadLocal之父子线程传值
不同的传值场景
ThreadLocal<String> threadLocal = new ThreadLocal<>();
...some codes...
threadLocal.set("value:::init-set");
...some codes...
threadLocal.get();public static void main(String[] args) {
//latch仅仅为了控制程序运行顺序,与主题无关
CountDownLatch latch = new CountDownLatch(1);
ThreadLocal<String> local = new ThreadLocal<>();
local.set("value:::value-in-prent");
System.out.println("[1]" + local.get());
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("[2]" + local.get());
local.set("value:::value-in-child");
System.out.println("[3]" + local.get());
latch.countDown();
}
}).start();
try {
latch.await();
System.out.println("[4]" + local.get());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//输出如下:
[1]value:::value-in-parent
[2]null
[3]value:::value-in-child
[4]value:::value-in-parent参考
Last updated