它说自从Struts 2动作bean被初始化后,每个请求都是线程安全的。但是如果几个线程在同一个HTTP请求中使用这个bean呢?所以除非我们以线程安全的方式编写bean,否则它不是真正的线程安全吗?
下面是struts 2 docs在比较Struts 1和Struts 2时的说法,
Struts 2 Action objects are instantiated for each request, so there are no thread-safety issues
我的dought甚至Struts 2 Action对象是为每个请求实例化的还是它的线程安全吗?
答案 0 :(得分:2)
在我看来,使用servlet技术设计了一个Web应用程序。 Struts2支持servlet规范至少2.4。 Web服务器使用HTTP协议与客户端通信,并管理线程。而且您知道容器每个请求创建的线程不超过一个。该框架不会创建除BackgroundProcess
之外的任何线程,并且它看起来像是以线程安全的方式执行它。您不负责管理操作bean,框架正在为您执行此操作。因此,如果它声称它的线程安全,你可以相信它,或者如果你有相反的证据就会妥协。根据此信息,您可以得出结论,您可以使用线程安全的托管bean。
答案 1 :(得分:0)
对于每个请求,都会创建Action类的新实例。所以struts 2 action class没有线程安全问题。
答案 2 :(得分:0)
是的,它是线程安全的。
Struts1操作类是Singleton且不是线程安全的,因此在开发人员方面要格外小心,以避免由于多线程而产生任何副作用。每个请求都会实例化Struts2动作类,因此没有多线程,并且使它们成为线程安全的。