當他們說struts框架中的動作控制器是多線程時,是否意味着有多個servlet實例接受請求並將其轉發給模型。或者是否意味着有一個實例接受所有請求?任何視覺效果將不勝感激struts動作控制器 - 多線程?
1
A
回答
1
正如大多數其他servlets一樣,創建一個單獨的線程來處理每個請求。您必須實現接口SingleThreadedModel
以獲取每個請求的servlet新實例。
1
看到http://struts.apache.org/1.x/userGuide/building_controller.html
Struts控制器servlet創建只有一個Action類的實例,並使用這一個實例來服務所有請求。因此,您需要編寫線程安全的Action類。遵循您將用於編寫線程安全的Servlet的相同準則。這裏有兩個一般準則,這將幫助你編寫出可伸縮的,線程安全的Action類:
只有使用局部變量 - 最重要的原則,即線程安全編碼艾滋病是隻使用局部變量, ,而不是你的Action類中的實例變量。局部變量創建在由每個請求線程分配的棧上(由您的JVM),因此不必擔心共享它們。只要所有需要的變量都作爲方法參數傳遞,一個Action可以被分解到幾個本地方法中。這確保了線程的安全性,因爲JVM在內部使用與單個線程關聯的調用棧來處理這些變量。
節約資源 - 作爲一般規則,分配稀缺資源,並讓他們跨請求來自同一用戶(在用戶的會話)可能會導致可伸縮性問題。例如,如果您的應用程序使用JDBC併爲每個用戶分配一個單獨的JDBC連接,那麼當您的站點突然顯示在Slashdot上時,您可能會遇到一些可伸縮性問題。在將控制轉發到適當的View組件之前,您應該努力使用池並釋放資源(如數據庫連接) - 即使您調用的bean方法拋出異常。
1
struts 1不是線程安全的;但至於strus 2,每個請求只有一個實例。
相關問題
- 1. 多線程彈簧啓動控制器
- 2. 將控制器動作放入線程
- 3. 多線程線程控制
- 4. Rails多控制器動作
- 5. Struts中的控制器
- 6. 控制多線程
- 7. REST控制器是多線程的嗎?
- 8. JavaFX多線程和控制器類
- 9. Rails的路線和控制器動作
- 10. eC#多線程控制UI
- 11. Java多線程控制
- 12. 在多線程中自動化Web瀏覽器控制
- 13. 製作程序多線程
- 14. 跨線程操作控制
- 15. 控制器和線程
- 16. Express.JS中的多動作控制器?
- 17. MVC 4:多控制器動作參數
- 18. 如何實現多動作控制器
- 19. 工作線程和控制器線程同步
- 20. 從其他鐵軌控制器動作訪問線程
- 21. 如果線程正在改變,緩存控制器動作
- 22. struts控制器和服務層?
- 23. 測試控制器動作
- 24. 控制PyQt中的異步線程 - 多線程或多處理?
- 25. 呼叫控制器動作
- 26. 在控制器動作
- 27. MVC,控制器的動作
- 28. simple_form_for用定製控制器動作
- 29. Rails link_to控制器動作
- 30. 控制器動作不ChicagoBoss