2010-01-06 38 views

回答

5

幾乎總是應該避免使用單線程模型。 (我假設你正在談論接口SingleThreadModel)。基本上它是爲了避免人們考慮併發性而引入的,但這不是一個好主意。併發是Web應用程序固有的 - 引入像單線程模式這樣的瓶頸是錯誤的解決方案。正確的解決方案是讓開發人員更好地瞭解併發性,並引入更好的構建塊來處理它。

接口被棄用了Java Servlet API 2.4,與此注:

注意SingleThreadModel並沒有提供 解決所有的線程安全問題。對於 例如,會話屬性和靜態變量 仍然可以通過在多個線程 多個請求同時訪問,即使使用 了SingleThreadModel的servlet。 建議顯影劑 採取其他手段來解決,而不是實現此 接口,如避免使用一個實例變量的 或 同步訪問這些資源的代碼 的塊那些 問題。這個 接口在Servlet API 版本2.4中已棄用。

1

當你的Servlet有狀態(這是一個壞主意),並且你想要防止多個請求踩在他們自己的腳趾(或數據)上。

我會建議你避免它,因爲在某些時候你會搞砸了。此外,性能下降就像一塊磚頭。

1

servlet的單線程模型用於表示servlet無法處理來自客戶端連接的多個併發線程。將servlet設置爲單線程模型會導致servlet容器(應用程序服務器)爲每個客戶端創建一個servlet實例。

最好的做法是而不是使用servlet的單線程模型。每個客戶端連接保存的數據通常存儲在客戶端會話對象中。

相關問題