Tomcat线程池重复使用,threadloacl使用不释放问题

Threadlocal为每个使用该变量的线程提供独立的变量副本。

 

2023-01-30 这天有一个线程用完参数之后  没有关闭

结果到了第二天又到了使用这个线程,然后threaloacl携带副本变量没关闭 ,导致bug

 

最终定位问题,有个地方没释放

总结:

使用线程池或有复用线程时,复用同一个线程时,每次请求结束后ThreadLoca的值l没有清空,导致第二次使用时ThreadLocal的变量还是上次遗留一下的变量,以致处理逻辑错误。

tomcat默认使用线程池,线程池中的线程是可以被复用的。所以用完之后一定要释放当前threadloacl线程。