2011-05-04 15 views

回答

4

它意味着checkAction方法将是由包围对象的内部锁(Action类对象的锁)同步。因此,一次只能有一个线程能够访问checkAction方法。

在Struts 1 Action类不是线程安全的。因此,多个线程(例如,处理多个请求)将访问Action类的相同实例。该方法是否需要同步?我不确定 - 只有你可以告诉方法中发生了什么。只要它不访问Action类的实例变量或者一次只能由一个线程完成的事情,那么同步可能不是必需的。

+0

我可以解释我对上述答案的解释,以确保正确理解这一点。这意味着由于struts 1 Action类不是线程安全的,并且因为它们是单例,所以在struts Action类内部创建一个方法允许一次只能访问一个线程。谢谢。 – 2011-05-08 06:15:55

+1

在Action类中进行同步的方法允许每次只访问1个线程。如果它没有被同步,那么尽可能多的线程可以进来(通常为什么你不使用实例变量来保存动作bean的状态) – planetjones 2011-05-08 08:16:26

+1

是的,同步并不是解决这个问题的正确方案(因为它创造了一个瓶颈)。正确的解决方案是只使用局部变量。如果你没有实例变量,那么你不需要同步。如果你想要实例变量,那么创建一个辅助类,把它们放在那里,并为每个请求实例化一个帮助器。 – 2011-05-11 15:23:11