gpt4 book ai didi

java - Struts ActionServlet 中的静态构建器类线程安全吗?

转载 作者:行者123 更新时间:2023-11-30 04:37:29 26 4
gpt4 key购买 nike

我在很多地方都看到过推荐的构建器模式,但不确定使用 Struts 的 Web 应用程序中的线程安全性。

我不清楚 build 静态方法的变量是由调用构建器代码的每个线程共享还是内部变量。我有预感这没问题,但想确定一下,因为构建器代码位于 Web 应用程序内部,并且可以同时由 10 个线程调用。

public static class ExampleBuilder {

public static Thing build(ActionForm form) {
String property1 = form.property1;
String property2 = form.property2;
String propertyX = form.propertyX;
...

return new Thing(property1, ...);
}
}

public class ExampleStrutsAction extends Action {

public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
Thing example = ExampleBuilder.build(form)
return mapping.findForward("success");
}
}

最佳答案

上面的build()方法仅使用局部变量,并且不访问线程之间共享的任何状态,因此它是线程安全的。局部变量对于每个方法调用都是局部的,因此不在线程之间共享。

唯一可能遇到的线程安全问题是表单是否具有session范围(这是一个不好的做法)。在这种情况下,两个线程可以使用相同的 ActionForm 实例。但这实际上并不是 build() 方法的问题。相反,这是一个设计问题,或者是使用此 session 范围 ActionForm 的 execute() 方法的同步问题。

关于java - Struts ActionServlet 中的静态构建器类线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13125615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com