ThreadLocal
ThreadLocal
- ThreadLocal并不是一个Thread,而是Thread的局部变量(哪个线程存的值,只能由哪个线程取)
- ThreadLocal为每个线程提供一份单独的存储空间,具有线程隔离效果,不同的线程之间不会相互干扰
- ThreadLocal常用方法:
- public void set(T value):设置当前线程的线程局部变量
- public T get():返回当前线程所对应的线程局部变量的值
- public void remove():移除当前线程的线程局部变量
示例:
1 | public class ThreadLocalTest { |
ThreadLocal 能实现全局访问特定信息(比如用户信息)是因为:
- 线程绑定:**一个HTTP请求由一个线程处理**
- 线程内共享:同一请求内的所有代码都在同一线程中执行
- 线程隔离:不同请求的线程互不干扰
- 简单API:提供 set()、get()、remove() 方法
这种机制使得特定信息可以在线程生命周期内任意位置访问,是Web应用中常见的上下文传递方案
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Norlcyan's Blog!
