https://cloud.tencent.com/developer/article/1798224
在做分布式链路追踪系统的时候,需要解决异步调用透传上下文的需求,特别是传递traceId,本文就线程池透传几种方式进行分析。
其他典型场景例子:
Session
级Cache
SDK
传递信息首先看一个最简单场景,也是一个错误的例子。
void testThreadLocal(){
ThreadLocal<Object> threadLocal = new ThreadLocal<>();
threadLocal.set("not ok");
new Thread(()->{
System.out.println(threadLocal.get());
}).start();
}
java中的threadlocal,是绑定在线程上的。你在一个线程中set的值,在另外一个线程是拿不到的。
上面的输出是:
null