java

解决线程切换导致ThreadLocal值丢失

2021-11-30  本文已影响0人  奋斗的韭菜汪

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));

原文地址请点击此处

上一篇下一篇

猜你喜欢

热点阅读