慎用ThreadLocal
2011-12-14 17:05 康杜 阅读(797) 评论(0) 编辑 收藏 举报ThreadLocal的作用
1)保存在当前线程计算的中间结果
2)保存上下文信息,比如用户的身份等等
ThreadLocal的副作用
1) 信息泄露。 在服务器环境下(比如WebLogic), 线程往往被保存在线程池中。由于每个用户的请求(Request)都是通过一个线程来处理的,当线程处理完一个用户的请求之后,服务器应用程序会将该线程存放在线程池中。当下一个用户请求时,这个线程又被调度来处理请求。这种情况下,上一个用户的上下文信息(比如身份信息)将被得到。
2)内存泄露。
解决方法
当每个用户的请求处理完成之后,调用ThreaLocal.remove()方法将数据清除
参考: