java的ThreadLocal类

ThreadLocal会造成内存泄露吗

threadLocal一般不会造成内存泄露。

一般使用是创建一个类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class UserIdThreadLocal {

private static final ThreadLocal<String> userIdLocal = new ThreadLocal<>();

public String getUserId() {
return userIdLocal.get();
}

public void setUserId(String userId) {
userIdLocal.set(userId);
}

public void remove() {
userIdLocal.remove();
}
}

如果使用在线程池环境中,一定要使用remove方法,因为线程池里的线程是复用的,如果不删除并且因为其他原因跳过了设置方法会引起脏数据,这个脏数据一定程序上也可以说是内存泄露。


java的ThreadLocal类
http://hanqichuan.com/2024/04/23/java/java的ThreadLocal类/
作者
韩启川
发布于
2024年4月23日
许可协议