问题描述
在拦截器里, 从 request 请求里拿出了一些数据例如用户id啥的, 存储到了 ThreadLocal 里, 在后面具体的业务处理中, 从 ThreadLocal 却里取不到值
问题分析
大概率是因为当前业务线程和之前拦截器不是同一线程, 可以使用一下方法查看一下线程 id 是否一致
Thread t = Thread.currentThread()
解决方案
找到原因侯就很容易解决了, 可以在进入业务前把数据从 ThreadLocal 里取出来, 或者重新在业务线程再 set 一次
注意
ThreadLocal 可能会存在内存溢出的问题, 所以在线程结束后, 要调用 remove 方法, 清除数据