十五、ThreadLocal
ThreadLocal并不是一个Thread,,而是Thread的局部变量。
ThreadLocal为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。
场景:通过过滤器/过滤器获取到JWT ,可将JWT值存储到ThreadLocal中,当执行到需要JWT的地方是可以进行取出使用(当前线程内)。
主要用途
- 数据隔离:在多线程环境中,确保每个线程都有自己的变量副本,避免线程之间的数据干扰。
- 状态保持:在同一个线程的不同方法调用之间保持状态,而不需要通过参数传递。
- 资源管理:在每个线程中管理资源,如数据库连接、Session 等。
常见方法/使用
ThreadLocal常用方法 | 说明 |
---|---|
public void set( T value ) | 设置当前线程的线程局部变量的值 |
public T get() | 获取当前所对应线程局部变量的值 |
public void remove() | 删除当前线程的线程局部变量 |
set(T value)
:设置当前线程的ThreadLocal
变量的值。get()
:获取当前线程的ThreadLocal
变量的值。remove()
:移除当前线程的ThreadLocal
变量的值。initialValue()
:返回此线程局部变量的初始值。默认返回null
,可以通过withInitial
方法提供自定义的初始值。
ThreadLocal 线程工具类,保存当前线程处理的用户的用户ID(或其他ID)
/**
* ThreadLocal 线程工具类,保存当前线程处理的用户的用户ID(或其他ID)
*/