ThreadLocal : Java提供的一个工具类,作用是实现线程之间的数据隔离

它为每个线程都提供了一个独立的变量副本

1. 通俗比喻:更衣柜

想象一个健身房(Java 应用程序):

每个人(线程)都有自己的专属柜子。

2. 为什么要用它?解决什么问题?

在 Web 开发(如 Spring Boot)中,每个 HTTP 请求都是由一个独立的线程处理的

场景: 在拦截器里解析了 Token,拿到了用户的 ID(比如 empId)。在后续的 Service 层、Mapper 层,都需要用到这个 ID(比如记录“是谁新增了这条数据”)。

如果不使用 ThreadLocal,有两种笨办法:

  1. 传参地狱: 必须把 empId 作为参数,从 Controller 一路传到 Service,再传到 Mapper。
  2. 定义全局静态变量(绝对禁止): public static Long currentId;

使用 ThreadLocal 的解决办法: 使用 ThreadLocal 存储 empId

3. 在项目中(苍穹外卖)的应用