首页 > 其他分享 >ThreadLocal

ThreadLocal

时间:2023-12-15 22:33:51浏览次数:29  
标签:userThreadLocal ThreadLocal static User 线程 public

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作用的机理与线程是绑定的,因此不能直接用于保存异步任务的数据,需要通过一些别的方式进行操作。

标签:userThreadLocal,ThreadLocal,static,User,线程,public
From: https://www.cnblogs.com/fengok/p/17904294.html

相关文章

  • ThreadLocal原理
    ThreadLocal主要起到线程隔离作用,使得每个线程拥有自己独立的一份数据,经过threadLocal处理的数据是线程独享的,不与其它线程分享或者干扰,因此能起到线程之间数据隔离的作用。ThreadLocal的几个核心方法:方法声明描述publicvoidset(Tvalue)设置当前线程绑定的局部变量pu......
  • Netty源码学习8——从ThreadLocal到FastThreadLocal(如何让FastThreadLocal内存泄漏do
    系列文章目录和关于我一丶引入在前面的netty源码学习中经常看到FastThreadLocal的身影,这一篇我们将从ThreadLocal说起,来学习FastThreadLocal的设计(《ThreadLocal源码学习笔记》)二丶从ThreadLocal说起ThreadLocal是JDK中实现线程隔离的一个工具类。实现线程隔离maybe你第一反应......
  • ThreadLocal的深度解读
    原文链接:https://zhuanlan.zhihu.com/p/624851777一、J2SE的原始描述Thisclassprovidesthread-localvariables.Thesevariablesdifferfromtheirnormalcounterpartsinthateachthreadthataccessesone(viaitsgetorsetmethod)hasitsown,independentlyin......
  • 线程-ThreadLocal篇
    ThreadLocal类(用于创建一个线程本地变量)在Thread中有一个成员变量ThreadLocals,该变量的类型是ThreadLocalMap,也就是一个Map,它的键是threadLocal,值就是变量的副本。通过ThreadLocal的get()方法可以获取该线程变量的本地副本,在get方法之前要先set,否则就要重写initialValue()方法......
  • 如何l利用`ThreadLocal`、`HandlerInterceptor`、`HandlerMethodArgumentResolver`来
    核心类ThreadLocal、HandlerInterceptor、HandlerMethodArgumentResolver1.ThreadLocal2.WebMvcConfigurer -addArgumentResolvers3.HandlerMethodArgumentResolver -supportsParameter -resolveArgumentThreadLocal:可以理解为一个线程安全的Map。//用户上下......
  • 使用JWT、拦截器与ThreadLocal实现在任意位置获取Token中的信息,并结合自定义注解实现
    1.简介1.1JWTJWT,即JSONWebToken,是一种用于在网络上传递声明的开放标准(RFC7519)。JWT可以在用户和服务器之间传递安全可靠的信息,通常用于身份验证和信息交换。声明(Claims):JWT包含一组称为声明的信息,声明描述了一些数据。有三种类型的声明:注册声明(RegisteredClaims):这是......
  • Java中ThreadLocal说明 使用线程内变量,完成后需调用remove()方法将其移除,即使异常也
    Java中ThreadLocal说明,完成后需调用remove()方法将其移除,即使异常也记得remove()回收,创建ThreadLocal线程变量publicstaticThreadLocalthreadLocal=newThreadLocal<>();1、ThreadLocal是什么ThreadLocal,即线程变量,是一个以ThreadLocal对象为键、任意对象为值的存储......
  • 面试10000次依然会问的【ThreadLocal】,你还不会?
    ThreadLocal简介与基本概念ThreadLocal,即线程局部变量,是Java语言中用于实现线程数据隔离的一个重要类。这种机制允许在多线程环境中,每个线程都有自己的变量副本,从而使得每个线程都可以独立地改变自己的副本,而不会影响其他线程的副本。这种特性对于保证线程安全至关重要,尤其是在处......
  • ThreadLocal原理
    从ThreadLocal的get和set方法入手publicvoidset(Tvalue){Threadt=Thread.currentThread();ThreadLocalMapmap=getMap(t);if(map!=null)map.set(this,value);elsecreateMap(t,value);}......
  • JAVA-EE手写ThreadLocal源码实现一个线程一个连接对象------Java-Web项目
    手写ThreadLocalpackagecom.bjpowernode.ThreadLocal;importjava.util.HashMap;importjava.util.Map;publicclassMyThreadLocal<T>{privateMap<Thread,T>map=newHashMap<>();publicvoidset(To){//向threadLocal中绑定......