Struts 1.x 中 Action 並非單例。每個請求默認創建新的 Action 實例(或從池獲取),而非全局唯一實例。
單例模式:確保一個類在整個應用程序生命周期中**只有一個實例**,並提供全局訪問點。
典型實現:私有構造器 + 靜態工廠方法 + volatile 雙重檢查鎖。
scope="request",每次請求新建實例,請求結束銷毀,**天然線程安全**(無共享狀態)。scope="session":同一會話共享實例,**需開發者保證線程安全**(同步或無狀態設計)。scope="application":全局單實例,**極度危險**,除非完全無狀態。Struts 2 Action 默認 **原型模式**(每請求一實例),通過 @Scope("prototype") 或 Spring 管理實現,同樣避免單例併發問題。
ThreadLocal 或請求作用域對象。「Struts Action 是單例」是**錯誤傳聞**。理解框架實例化策略,配合無狀態設計,才是併發安全的正道。