ThreadLocal遇到线程池时导致的内存泄漏问题

问题:线程池中的A线程运行A1任务时设置了threadlocal1变量的值,A1任务结束后,对threadlocal1的引用不会消失。那么再次运行任务A2时再次设置threadlocal1的值,不会覆盖掉原来的值吗?还会继续生成新的Threadlocal对象作为新的可以吗?

期望:
有没有样例以供调试查看。

在使用完ThreadLocal后,最好是将其变量进行删除,因为ThreadLocal是整个线程的生命周期有效,形成了线程与线程之间的隔离,所以无法覆盖。
参考代码如下,通过getUser获取值,setUser设置值,remove删除值,多线程时为了保证内存不溢出,需要在线程结束时进行删除,否则将一直占用内容:

public class RequestHolder {

    private static final ThreadLocal<SysUser> userHolder = new ThreadLocal<SysUser>();


    public static void setUser(SysUser sysUser) {
        userHolder.set(sysUser);
    }

    public static SysUser getUser() {
        return userHolder.get();
    }

    public static void remove() {
        userHolder.remove();
    }
}

参考博客:https://blog.csdn.net/zhuocailing3390/article/details/123030701

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,超出我们目前的服务范围,暂时无法为您解答。


问答VIP目前服务范围为 :Python、Java、MySQL、Redis、MongoDB、HBase、Zookeeper、Kafka、Linux领域专业问题解答,为您提供解决问题的思路和指导。
不提供源码代写、项目文档代写、论文代写、安装包资源发送或安装指导等服务。


本次提问扣除的有问必答次数,会为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。