当前位置: 首页 > news >正文

ThreadLocal用法详解

一、什么是 ThreadLocal?

ThreadLocal 是 Java 提供的一种机制,用于在多线程环境下为每个线程提供独立的变量副本。换句话说,每个线程都有自己独立的变量副本,线程之间互不干扰。

ThreadLocal 本身并不是为了解决并发问题而设计的,而是通过提供线程隔离的方式来避免多线程之间的竞争条件。

    简单示例
    public class ThreadLocalExample {
        private static ThreadLocal<Integer> threadLocal = ThreadLocal.withInitial(() -> 0);
    
        public static void main(String[] args) {
            Runnable task = () -> {
                int value = threadLocal.get();
                System.out.println(Thread.currentThread().getName() + " initial value: " + value);
                threadLocal.set(value + 1);
                System.out.println(Thread.currentThread().getName() + " updated value: " + threadLocal.get());
            };
    
            Thread t1 = new Thread(task, "Thread-1");
            Thread t2 = new Thread(task, "Thread-2");
    
            t1.start();
            t2.start();
        }
    }
    

    输出:

    Thread-1 initial value: 0
    Thread-2 initial value: 0
    Thread-1 updated value: 1
    Thread-2 updated value: 1
    

    从输出可以看到,两个线程的变量是相互独立的,互不干扰。


    二、ThreadLocal 的底层原理

    1. 核心思想

    ThreadLocal 的核心思想是为每个线程维护一个独立的变量副本。具体实现依赖于 Thread 类中的 ThreadLocalMap

    2. 数据结构
    • 每个 Thread 对象都有一个 ThreadLocalMap,它是一个类似于 HashMap 的数据结构,但它的键是弱引用(WeakReference),值是强引用。
    • ThreadLocalMap 的键是 ThreadLocal 实例,值是线程的变量副本。
    3. 工作流程
    1. 当调用 ThreadLocal.get() 时:

      • 获取当前线程(通过 <

    相关文章:

  • 聊一聊缓存如何进行测试
  • 图片边缘采样
  • 自动化释放linux服务器内存脚本
  • 6-2 赶工中~
  • Https安全
  • ansible条件判断及循环
  • 【系统架构设计师】嵌入式操作系统的定义及特点
  • Spring实现WebScoket
  • UE5学习记录 part13
  • 无人机遥测系统工作与技术难点分析!
  • 本地部署DeepSeek-R1(Dify压力测试和性能调优)
  • GOAT‘S AI早鸟报Part11
  • 在Thinkphp中使用JWT 包括JWT是什么,JWT的优势
  • Crypto加密货币生态构成及较有前景的几个crypto项目
  • uniapp -- 列表垂直方向拖拽drag组件
  • Python第七章05:文件操作综合练习题
  • 游戏引擎学习第198天
  • ②EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
  • JsonCpp 处理 JSON(现代 C++ 方案)(三)
  • WPF基础知识
  • 杨轶群任莆田市荔城区人民政府副区长
  • 国家卫健委对近日肖某引发舆情问题开展调查
  • 湖北鄂州通报4所小学学生呕吐腹泻:供餐企业负责人被采取强制措施
  • 十四届全国人大常委会第十五次会议在京闭幕
  • 国台办:相关优化离境退税政策适用于来大陆的台湾同胞
  • 上海“模速空间”:将形成人工智能“北斗七星”和群星态势