ThreadLocal

复制代码
public class UserContext {  
    private static ThreadLocal<User> userThreadLocal = new ThreadLocal<>();  
  
    public static void setUser(User user) {  
        userThreadLocal.set(user);  
    }  
  
    public static User getUser() {  
        return userThreadLocal.get();  
    }  
  
    public static void clear() {  
        userThreadLocal.remove();  
    }  
}
复制代码

1线程安全:ThreadLocal是线程安全的,因为它为每个线程提供了一个独立的变量副本,避免了多个线程共享同一个变量的可能问题。
2避免显式传递参数:使用ThreadLocal可以避免显式传递参数,使得代码更加简洁和易于维护。
3方便存储线程上下文信息:ThreadLocal可以用来存储线程上下文信息,使得在处理请求时能够方便地获取和使用这些信息。

需要注意使用后调用remove方法清除对应的引用,避免出现内存泄漏的问题。
由于ThreadLocal作用的机理与线程是绑定的,因此不能直接用于保存异步任务的数据,需要通过一些别的方式进行操作。

posted @   Anne起飞记  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示