spring 线程池中,如何使用theadlocal上下文
Posted 蟑螂恶霸的开发笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring 线程池中,如何使用theadlocal上下文相关的知识,希望对你有一定的参考价值。
依赖
<dependency> <groupId>com.alibaba</groupId> <artifactId>transmittable-thread-local</artifactId> </dependency>
使用
public class AsyncThreadPoolConfiguration implements AsyncConfigurer @Override public Executor getAsyncExecutor() ThreadPoolTaskExecutor threadPool = new ThreadPoolTaskExecutor(); // TODO 配置具体参数 threadPool.initialize(); // 重点:使用 TTL 提供的 TtlExecutors return TtlExecutors.getTtlExecutor(threadPool); @Override public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() return new SimpleAsyncUncaughtExceptionHandler(); public final class ThreadContext // 只需替换 InheritableThreadLocal 为 TransmittableThreadLocal 即可 private static final ThreadLocal<Long> USER_ID_LOCAL = new TransmittableThreadLocal<>(); public static Long getUserId() return USER_ID_LOCAL.get(); public static void setUserId(Long userId) USER_ID_LOCAL.set(userId); public static void clear() USER_ID_LOCAL.remove();
转自 https://www.jianshu.com/p/4093add7f2cd
以上是关于spring 线程池中,如何使用theadlocal上下文的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud Gateway中netty线程池优化
TransmittableThreadLocal相关组件实用解读,及如何达到线程池中的线程复用,及使用在哪些线程数据传递场景?