ThreadLocal是一个线程内部的数据存储类,通过它可以在指定的线程中存储数据,数据存储以后,只能在指定的线程中获取存储的数据,对于其他线程来说则是无法获取到的。
1、通过ThreadLocal实现当前线程共享
2、遇到子线程可以通过InheritableThreadLocal实现数据传递共享
3、当遇到使用线程池时可以使用阿里的TransmittableThreadLocal实现数据传递
import com.alibaba.ttl.TransmittableThreadLocal;
/**
* 跨线程池线程变量共享
* @date 2023/7/13 16:38
* @author luohao
*/
public class ThreadLocalUtils {
private static final TransmittableThreadLocal<String> threadLocal = new TransmittableThreadLocal<>();
//获取值
public static String getThreadLocal(){
return threadLocal.get();
}
//赋值
public static void setThreadLocal(String value){
threadLocal.set(value);
}
//使用完需要remove,否则可能会造成内存泄漏
public static void clear(){
threadLocal.remove();
}
}