2014-10-10 90 views
1

我對單線程模型和多線程模型感到困惑。 SpringMVC是什麼類型的模型?SpringMVC是在單線程模型還是多線程模型上工作?

謝謝

+1

一般來說,Spring MVC是線程安全的,除非javadoc另有說明。另外,'單/多線程模型'是Servlet規範談到的嗎?如果是的話,請記住,'單線程模型'對於所有體面的Web應用程序都是不相關的,你將一直使用多線程模型(所以你可以假設所有最近的框架都在多線程模型中工作)。 – 2014-10-10 12:24:09

+0

它的多線程。請參閱http://stackoverflow.com/questions/5980246/can-a-spring-mvc-app-be-multithreaded-even-if-its-servlets-are-獲取更多信息 – Vishnu 2014-10-10 12:27:37

回答

5

SpringMVC控制器是單身人士,並提供併發請求。它們以多線程方式使用,因此必須寫成線程安全(執行之間不共享狀態)。

6

如果你的意思是「Spring MVC實現了javax.servlet.SingleThreadModel接口嗎?」那麼它不會。

SingleThreadModel保證「servlet一次只處理一個請求」。 (來自API文檔)。這通常由servlet容器管理,該容器將維護一個Servlet實例池併爲每個傳入請求分配一個實例。這是一種很少使用的執行模型,並且從Java Servlet API 2.4開始,該接口本身已被棄用,沒有直接替換。

對於Spring MVC,您應該假設您的控制器一次將處理多個請求,這使您有責任確保您的處理是線程安全的。