1. 程式人生 > >Servlet放入執行緒不安全的問題。

Servlet放入執行緒不安全的問題。

Servlet執行緒不安全問題:

造成這樣的根本原因:Servlet是單例的。Servlet中的非static的成員變數只有一份。多個客戶端就好比多個執行緒。都是訪問同一個空間。

解決方法:

讓當前的Servlet中實現介面:

javax.servlet Interface SingleThreadModel介面 保證只有一個Servlet介面。如果有多執行緒資源排隊。但是如此效率的很低。效能超低階。(已經過時)

在Servlet中不要使用說成員變數 。儘可能使用區域性變數。每一個使用者都會有一個service的方法。而區域性變數在service方法中 每一次的方法都是新的空間。

但是Struts spring MVC框架都是執行緒不安全的。因為都是單例的模式和Servlet類似。

在Struts2的執行緒是安全的。因為每一個執行緒都是一個新的Action物件。