在本地线程中设置setter getter类

时间:2014-03-10 14:15:26

标签: java thread-local

我有一个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几次。

我在这里做错了吗?

1 个答案:

答案 0 :(得分:0)

顾名思义ThreadLocal变量是当前线程的本地变量。因此,您可能在一个线程中设置reqUtil实例,但对于其他线程,它保持null

您的doPost方法可能是从不同的线程调用的。因此,您有时会得到一个值,有时则不会。

您应该确保初始化ThreadLocals对所有线程都是正确的。

也许ThreadLocal不正是您所需要的?