Java Struts 2中的HttpServletRequest和静态方法线程安全

Java Struts 2中的HttpServletRequest和静态方法线程安全,java,struts2,thread-safety,static-methods,Java,Struts2,Thread Safety,Static Methods,假设我在这样的类中有一个静态方法: public static String getSomething(HttpServletRequest request) 在方法中,调用request.getHeaderheaderName和request.getParameterparameterName 另外,在Struts 2操作中,我在execute中调用了此函数: private String theString; public String execute() throws Exceptio

假设我在这样的类中有一个静态方法:

public static String getSomething(HttpServletRequest request)
在方法中,调用request.getHeaderheaderName和request.getParameterparameterName

另外,在Struts 2操作中,我在execute中调用了此函数:

private String theString;

public String execute() throws Exception {
    theString = TheClass.getSomething(ServletActionContext.getRequest());
    ....
    ....
}

假设我在静态getSomethingrequest函数中没有修改请求异议,那么这个线程安全吗?我猜是的,因为据我所知,动作中的HttpServletRequest对象是线程本地的,但我不是100%确定。

是的,它是完全线程安全的,因为所有变量都只从堆栈中引用。

是的,它是线程安全的,因为您将其作为参数传递。这就像在代码中使用一个静态数学类。

每个线程都有一个单独的线程,所以不管它是从多个线程调用的,因为它们没有共享状态。@Jimadilo:但我想我们只有一个action类对象Singleton,这是我基于Servlet原则的假设。所以,来自浏览器的所有线程请求都将操作相同的对象状态,在本例中,不是吗?@Nambari No.Struts 2为每个请求实例化一个操作。Servlet不是Struts2。@DaveNewton:谢谢你的澄清,正如我所说的,我没有在Struts2上工作过。我将删除我的第一条评论。因此Struts 2不可能对另一个线程中的HttpServletRequest对象进行任何更改,因为它是线程本地的?@jtyler每个请求都有一个请求,否则它不是正在处理的请求。很好,好,我不确定Struts 2是否对我不知道的请求做了什么奇怪的事情-谢谢。