Tomcat线程池重复使用,threadloacl使用不释放问题
Threadlocal为每个使用该变量的线程提供独立的变量副本。
2023-01-30 这天有一个线程用完参数之后 没有关闭
结果到了第二天又到了使用这个线程,然后threaloacl携带副本变量没关闭 ,导致bug
最终定位问题,有个地方没释放
总结:
使用线程池或有复用线程时,复用同一个线程时,每次请求结束后ThreadLoca的值l没有清空,导致第二次使用时ThreadLocal的变量还是上次遗留一下的变量,以致处理逻辑错误。
tomcat默认使用线程池,线程池中的线程是可以被复用的。所以用完之后一定要释放当前threadloacl线程。