我有一个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几次。
我在这里做错了吗?
答案 0 :(得分:0)
顾名思义ThreadLocal
变量是当前线程的本地变量。因此,您可能在一个线程中设置reqUtil
实例,但对于其他线程,它保持null
您的doPost
方法可能是从不同的线程调用的。因此,您有时会得到一个值,有时则不会。
您应该确保初始化ThreadLocals
对所有线程都是正确的。
也许ThreadLocal
不正是您所需要的?