2011-05-04 45 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