ThreadLocal

 (七)ThreadLocal

ThreadLocal 是 Java 中用于实现线程局部变量的类,它为每个使用该变量的线程都创建一个独立的副本,每个线程都可以独立地改变自己的副本,而不会影响其他线程所对应的副本。以下是关于 ThreadLocal 的详细解析:

1. 核心概念

  • 线程隔离:每个线程都拥有自己的独立变量副本,线程间互不影响。
  • 存储作用域:变量的作用域限定于当前线程,生命周期与线程一致。
  • 典型场景
    • 数据库连接(每个线程独立维护自己的连接)。
    • 用户会话管理(每个线程保存独立的用户信息)。
    • 日志上下文传递(如链路追踪 ID)。
    public static void main(String[] args){
        ThreadLocal local = new ThreadLocal<>();//注意这是一个泛型类,存储类型为我们要存放的变量类型
        Thread t1 = new Thread(() -> {
            local.set("aaa");
            System.out.println("变量值已设定");
            System.out.println(local.get());
        });
        Thread t2 = new Thread(() -> {
            System.out.println(local.get());
        });
        t1.start();
        t2.start();
    }
}

/*
输出
变量值已设定
aaa
null
*/

ThreadLocal local = new InheritableThreadLocal<>();--->子线程可以继承主线程

你可能感兴趣的:(ThreadLocal)