1、static 的必要性:全局唯一实例
问题示例(非静态):
public class UserService {
// 错误:每个实例都有自己的 ThreadLocal
private ThreadLocal userThreadLocal = new ThreadLocal<>();
public void process() {
userThreadLocal.set(new User());
}
}
// 使用时会创建多个 ThreadLocal 实例
UserService service1 = new UserService();
UserService service2 = new UserService();
// 每个实例都有独立的 ThreadLocal,导致内存浪费
正确示例(静态):
public class UserContext {
// 正确:所有实例共享同一个 ThreadLocal
private static final ThreadLocal userThreadLocal = new ThreadLocal<>();
public static void setUser(User user) {
userThreadLocal.set(user);
}
}
2、final 的必要性:防止重新赋值
final 防止的内存泄漏场景:
public class DangerousExample {
private static ThreadLocal