【发布时间】:2012-12-03 21:37:06
【问题描述】:
假设我在这样的类中有一个静态方法:
public static String getSomething(HttpServletRequest request)
方法中调用request.getHeader("headerName")和request.getParameter("parameterName")。
另外,在 Struts 2 Action 中,我在 execute() 中调用了这个函数:
private String theString;
public String execute() throws Exception {
theString = TheClass.getSomething(ServletActionContext.getRequest());
....
....
}
假设我没有修改我的静态 getSomething(request) 函数中的请求反对,这个线程安全吗?我猜是的,因为据我了解,动作中的 HttpServletRequest 对象是线程本地的,但我不是 100% 确定。
【问题讨论】:
-
每个线程都有一个单独的线程,因此如果从多个线程调用它并不重要,因为它们不共享状态。
-
@Jimadilo:但我想我们只有一个动作类对象(Singleton,这是我基于 Servlet 原理的假设)。所以,在这种情况下,所有线程(来自浏览器的请求)都会操作相同的对象状态(theString),不是吗?
-
@Nambari No. Struts 2 根据请求实例化一个动作。 Servlet 不是 Struts 2。
-
@DaveNewton:感谢您的澄清,正如我所说,还没有在 Struts2 上工作过。我将删除我的第一条评论。
标签: java struts2 thread-safety static-methods