ThreadLocal介绍:
ThreadLocal是Java中的一个类,它提供了线程局部变量。这些变量在每个线程中都有一个独立的副本,因此不同的线程可以独立地修改它们自己的副本,而不会影响其他线程的副本。
ThreadLocal的主要用途是为每个线程提供一个独立的变量副本,以便在多线程环境中避免共享变量的竞争和同步问题。
ThreadLocal变量在每个线程结束时会自动清除,以避免内存泄漏。因此,当线程执行完毕后,ThreadLocal变量的引用会被自动清除。
(ThreadLocal并不是一个Thread,而是Thread的局部变量。
ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。)
ThreadLocal常用方法
public void set(T value) 设置当前线程的线程局部变量的值
public T get()返回当前线程所对应的线程局部变量的值
public void remove()移除当前线程的线程局部变量
下面是一种使用案例:
public class BaseContext {
public static ThreadLocal<Long> threadLocal = new ThreadLocal<>();
public static void setCurrentId(Long id) {
threadLocal.set(id);
}
public static Long getCurrentId() {
return threadLocal.get();
}
public static void removeCurrentId() {
threadLocal.remove();
}
}