【问题标题】:What does it mean to have a synchronized instance method in Struts 1 Action class?在 Struts 1 Action 类中有一个同步的实例方法是什么意思?
【发布时间】:2011-05-04 10:02:13
【问题描述】:

我想检查一下在 Struts 1 Action 类中拥有一个同步实例方法意味着什么?

有点像

public synchronized String checkAction(){ ... } 

【问题讨论】:

    标签: methods struts synchronized struts1


    【解决方案1】:

    这意味着 checkAction 方法将被封闭对象的内在锁(动作类对象的锁)同步。所以一次只有一个线程可以访问 checkAction 方法。

    在 Struts 1 中,Action 类不是线程安全的。所以多个线程(例如服务多个请求)将访问 Action 类的同一个实例。方法是否需要同步?我不确定——只有你可以通过方法中发生的事情来判断。只要它不访问 Action 类的实例变量或执行一次只能由单个线程完成的事情,那么可能就不需要同步。

    【讨论】:

    • 我可以解释一下我对您上面答案的解释,以确保我正确理解这一点。这意味着由于 struts 1 Action 类不是线程安全的,并且因为它们是单例,所以在 struts Action 类中创建一个方法一次只允许访问 1 个线程。谢谢。
    • 在 Action 类中同步方法只允许一次访问 1 个线程。如果它不同步,那么可以进入尽可能多的线程(通常为什么你不使用实例变量来保持 Action bean 中的状态)
    • 是的,同步并不是解决这个问题的正确方法(因为它会造成瓶颈)。正确的解决方案是仅使用局部变量。如果您没有实例变量,那么您不需要同步。如果您需要实例变量,则创建一个帮助器类,将它们放入其中,并为每个请求实例化一个帮助器。
    猜你喜欢
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2010-12-28
    • 2019-07-06
    相关资源
    最近更新 更多