1.jdk 自带的InheritableThreadLocal 只针对父子线程 有效,针对线程池失效
2.使用阿里的transmittable-thread-local 可以解决线程池内的threadLocal 问题
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>transmittable-thread-local</artifactId>
<version>2.2.0</version>
</dependency>
只需要修改2个地方,修饰线程池和替换InheritableThreadLocal:
static TransmittableThreadLocal<String> threadLocal = new TransmittableThreadLocal<>();
static ExecutorService pool = TtlExecutors.getTtlExecutorService(Executors.newFixedThreadPool(2));
网友评论