【发布时间】:2014-03-10 14:15:26
【问题描述】:
我有一个 setter getter 类,我在服务方法的开头在 ThreadLocal 中设置该类。
reqUtil = new RequestUtil();
ThreadLocal.set(reqUtil);
现在为 doPost 中的 reqUtil 方法设置值。
reqUtil.setHeaders(headerList);
reqUtil.setUser(request.getParameter("UserName"))
当我尝试在其他类中使用 threadlocal 获取这些 setter 方法的值时。有时我得到值,而有时我得到空值。
ThreadLocal.get().getUserName() 有时返回值,有时返回 null。
我在这里做错了吗?
【问题讨论】:
-
正如答案中提到的,每个线程都必须设置它,然后只有它的 get 方法会返回值。可能是您在错误的地方使用了 ThreadLocal。您的应用程序是否使用线程?看起来你的网络应用程序。如果您只想存储用户详细信息,可以将其存储在其用户会话中。
标签: java thread-local