业务场景
ThreadLocal 用来创建线程的局部变量,每一个线程都拥有该变量的独立副本,互相不会干扰。
可以存储上下文的基本信息,比如 userId.
比如用户评论了某个文章,肯定要记录用户的 ID,但是用户请求过来正常是不携带 ID,可以将 ID 存储到 ThreadLocal 中去,在插入的时候就可以拿到 ID。
public class UserHolder {
private static final ThreadLocal<UserDTO> tl = new ThreadLocal<>();
public static void saveUser(UserDTO user){
tl.set(user);
}
public static UserDTO getUser(){
return tl.get();
}
public static void removeUser(){
tl.remove();
}<