【问题标题】:If Struts 1 action classes are singletons, does it mean there cannot be 2 threads of the class available?如果 Struts 1 动作类是单例的,这是否意味着该类不能有 2 个线程可用?
【发布时间】:2011-05-03 09:00:56
【问题描述】:
如果Struts 1动作类是单例模式类,是否意味着该类不能有两个线程可供使用?
我的问题是好奇,如果我要标记 Struts 1 类中的方法同步,这是否意味着该方法在任何时候都只能服务于 1 个线程。
private synchronized void runSubmitCalculatorState(ControllerRequest request,ControllerResponse response){}
【问题讨论】:
标签:
multithreading
singleton
thread-safety
struts
synchronized
【解决方案1】:
单例意味着在整个应用程序中只会创建该类的一个实例。它不意味着
该类不能有两个线程可供使用。
同步方法意味着一次只有一个线程能够访问该方法。
syncronized 和 singleton 之间没有直接关系,这意味着您可以创建要同步的 singleton 或非 singleton 类。
【解决方案2】:
Struts 1 动作是单例的,因此它们必须是线程安全的,因为只有一个类的实例处理该动作的所有请求。单例策略仅限于 Struts 1 Actions,并且在开发应用程序时需要特别注意使操作资源线程安全或同步。