一、概述
ThreadLocal并不是一个Thread,而是
Thread的局部变量
。
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();
}
}
四、应用场景
获取当前登录人的相关信息。可以在登录的时候使用Set()存储当前登陆人的ID,在需要使用的地方使用Get()获取当前登录人的ID进行相关操作。