网站建设以什么盈利,wordpress邮件发文,分销系统定制,wordpress背景怎么改问题:
ThreadLocal默认不支持子线程获取#xff0c;而InheritableThreadLocal支持子线程获取threadLocal值#xff0c;但是如果使用线程池#xff0c;核心个数为1则子线程会获取到上一个threadLocal的值。
解决#xff1a;
1.引入transmittable-thread-local jar
d…问题:
ThreadLocal默认不支持子线程获取而InheritableThreadLocal支持子线程获取threadLocal值但是如果使用线程池核心个数为1则子线程会获取到上一个threadLocal的值。
解决
1.引入transmittable-thread-local jar
dependencygroupIdcom.alibaba/groupIdartifactIdtransmittable-thread-local/artifactIdversion2.11.4/version
/dependency
2. threadLocal 初始化 private static final TransmittableThreadLocalUser CURRENT_USER_HOLDER new TransmittableThreadLocal();3. Executor bean,使用TtlExecutor
Bean(value defaultThreadPool)public Executor buildQueueThreadPool() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();int cpuNum Runtime.getRuntime().availableProcessors();// 设置核心线程数executor.setCorePoolSize(Math.min(cpuNum * 2, 16));// 设置最大线程数executor.setMaxPoolSize(cpuNum * 2);//队列中最大的数目executor.setQueueCapacity(300);//线程名称前缀executor.setThreadNamePrefix(defaultThreadPool_);//rejection-policy当pool已经达到max size的时候如何处理新任务//CALLER_RUNS不在新线程中执行任务而是由调用者所在的线程来执行//对拒绝task的处理策略executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());//线程空闲后的最大存活时间executor.setKeepAliveSeconds(60);//加载executor.initialize();return TtlExecutors.getTtlExecutor(executor);}