太原做网站排名,wordpress文章按阅读次数排序,北京网站建设开发,wordpress文章页宽度一、InheritableThreadLocal的不足
InheritableThreadLocal可以用于主子线程之间传递参数#xff0c;但是它必须要求在主线程中手动创建的子线程才可以获取到主线程设置的参数#xff0c;不能够通过线程池的方式调用。
但是现在我们实际的项目开发中#xff0c;一般都是采…一、InheritableThreadLocal的不足
InheritableThreadLocal可以用于主子线程之间传递参数但是它必须要求在主线程中手动创建的子线程才可以获取到主线程设置的参数不能够通过线程池的方式调用。
但是现在我们实际的项目开发中一般都是采用线程池的这时候InheritableThreadLocal就有点不够用了。
所以TransmittableThreadLocal就出场了。
二、TransmittableThreadLocal - 在线程池中传递获取参数
TransmittableThreadLocal是阿里开源的一个方案。
开源地址https://github.com/alibaba/transmittable-thread-local
这个类继承并加强了InheritableThreadLocal。经常被用在一下场景中
分布式跟踪系统或全链路压测链路打标日志收集系统上下文应用容器或上层框架夸应用代码给下层SDK传递信息
下面通过一个代码示例来验证和查看TransmittableThreadLocal是如何将主线程中的参数传递到线程池中的
public class TransmittableThreadLocalTest {static ExecutorService threadPool Executors.newFixedThreadPool(10);static TransmittableThreadLocalString transmittableThreadLocal new TransmittableThreadLocal();public static void main(String[] args) {transmittableThreadLocal.set(test);threadPool.execute(()- {System.out.println(result transmittableThreadLocal.get());});}
}从打印的结果可以看到线程池中的线程是可以成功获取到main线程中通过TransmittableThreadLocal设置的参数test的值的。