一、ThreadLocal 核心原理
ThreadLocal 是 Java 提供的线程绑定机制,为每个线程维护变量的独立副本。其内部通过 ThreadLocalMap 实现,每个线程的 Thread 对象都有一个独立的 ThreadLocalMap,存储以 ThreadLocal 对象为键、线程局部变量为值的映射。
关键特性:
- 线程隔离:每个线程访问自己的变量副本,互不干扰。
- 生命周期绑定:变量生命周期与线程绑定,线程结束则变量自动释放。
- 惰性初始化:首次调用
get()时初始化变量(可通过withInitial()指定初始化逻辑)。
二、使用步骤
1. 定义 ThreadLocal 变量
// 方式1:匿名内部类实现
private static final ThreadLocal<String> threadLocal = new ThreadLocal<>();
// 方式2:Java 8+ 的 withInitial() 方法(推荐)
private static final ThreadLocal<String> threadLocal = ThreadLocal.withInitial(() -> {
System.out.println("线程 " + Thread.currentThread().getName() + " 初始化");
return "默认值";
});
2. 设置线程局部变量
threadLocal.set("当前线程的值"); // 设置当前线程的副本
3. 获取线程局部变量
String value = threadLocal.get(); // 获取当前线程的副本
4. 移除线程局部变量
threadLocal.remove(); // 清理当前线程的副本(防止内存泄漏)
三、典型使用场景
场景1:线程安全日期格式化
public class SafeDateFormatter {
private static

最低0.47元/天 解锁文章
10万+

被折叠的 条评论
为什么被折叠?



