一、ThreadLocal
ThreadLocal:线程局部变量,用于线程间的线程封闭。ThreadLocal为变量在每个线程中都创建了一个副本,每个线程可以访问自己内部的副本变量。
二、InheritableThreadLocal
InheritableThreadLocal:可继承的线程局部变量,用于父线程传递本地变量到子线程。InheritableThreadLocal继承自ThreadLocal,并且重写了父类的方法:childValue、getMap、createMap。
三、TransmittableThreadLocal
TransmittableThreadLocal:可传输的线程局部变量,在使用线程池等会池化复用线程的执行组件情况下,提供ThreadLocal值的传递功能,解决异步执行时上下文传递的问题。
。TransmittableThreadLocal继承自InheritableThreadLocal。
使用场景如下:
1、分布式跟踪系统 或 全链路压测(即链路打标)
2、日志收集记录系统上下文
3、Session级Cache
4、应用容器或上层框架跨应用代码给下层SDK传递信息
四、FastThreadLocal
FastThreadLocal:快速的线程局部变量。要和FastThreadLocalThread配合使用。