N

Norlcayn的博客

A text-focused Halo theme

  • 首页
  • 文章
  • 默认分类
  • 关于
主页 ThreadLocal
文章

ThreadLocal

发表于 2026-01-15 更新于 昨天
作者 Administrator
5~7 分钟 阅读
  • ThreadLocal并不是一个Thread,而是Thread的局部变量(哪个线程存的值,只能由哪个线程取)
  • ThreadLocal为每个线程提供一份单独的存储空间,具有线程隔离效果,不同的线程之间不会相互干扰
  • ThreadLocal常用方法:
  • public void set(T value):设置当前线程的线程局部变量
  • public T get():返回当前线程所对应的线程局部变量的值
  • public void remove():移除当前线程的线程局部变量

示例:

public class ThreadLocalTest {
    private static ThreadLocal<String> local = new ThreadLocal<>();

    public static void main(String[] args) {
        local.set("Main Message");

        // 创建线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                local.set("Sub Message");
                System.out.println(Thread.currentThread().getName() + " : " + local.get());     // Thread-0 : Sub Message
            }
        }).start();

        System.out.println(Thread.currentThread().getName() + " : " + local.get());             // main : Main Message
    }
}

ThreadLocal 能实现全局访问特定信息(比如用户信息)是因为:

  • 线程绑定:**一个HTTP请求由一个线程处理**
  • 线程内共享:同一请求内的所有代码都在同一线程中执行
  • 线程隔离:不同请求的线程互不干扰
  • 简单API:提供 set()、get()、remove() 方法

这种机制使得特定信息可以在线程生命周期内任意位置访问,是Web应用中常见的上下文传递方案

后端 Java Web入门 上下文传递
许可协议:  CC BY 4.0
分享

相关文章

下一篇

SpringBoot底层剖析

上一篇

SpringBoot用户登录与校验功能

最近更新

  • Hello Halo
  • 状态机
  • 数据表设计规范
  • 缓存优化
  • 事务失效

热门标签

Halo 异常处理 Redisson 并行 Vue 并发 递归 请求限流 SpringAMQP 类加载器

目录

©2026 Norlcayn的博客. 保留部分权利。

使用 Halo 主题 Chirpy