1.盡可能在servlet中使用本地變數
2.應該只使用制度的例項變數和靜態變數
3.不要再servlet中建立自動的執行緒
4.修改共享物件,一定要使用同步,盡可能縮小同步**的範圍,從效能角度考慮,不要再方法粒度上同步。
5.不同的servlet,對外部物件進行修改,要做加鎖操作。
6.使用同步的集合類,如使用vector而非arraylist,使用hashtable而非hashmap。
關於servletcontext、httpsession、servletrequest物件的執行緒安全情況.
---------》servletcontext只保留幾乎不修改的資料,而其他經常需要修改的,則採取別的辦法在多個servlet中共享。
2.httpsession物件只處理同一session的請求,但在多執行緒場景下,也可能對同乙個物件進行設定或者讀取,也是執行緒不安全的。
3.servlnetrequest
servlet容器對於接收到的每個請求,都會建立乙個請求物件,該物件只能在乙個執行緒裡被訪問,所以是執行緒安全的。
開發執行緒安全的Servlet
servlet規範定義,在預設情況下 servlet不是在分布式的環境部署 servlet容器對宣告的每乙個servlet,只建立乙個例項。若有多個客戶請求同時訪問這個servlet,servlet容器將採用多執行緒,servlet容器維護了乙個執行緒池來服務請求。執行緒池實際上是等待執行 的一組執...
servlet執行緒安全
很多情況下,可能會有很多併發的請求,為了提高執行效率,節省記憶體資源,容器採用thread pool.一般情況下容器只對每個servlet生成乙個例項,讓他服務於說有的請求,對於客戶端同時請求乙個servlet,他們是被併發的處理的,並不是等上乙個請求處理完成再處理下乙個。如果兩個請求同時到達,那麼...
Servlet 執行緒安全
普通類的靜態屬性,當被多個執行緒訪問時,就有執行緒安全問題 servlet也一樣 當多個客戶端併發訪問同乙個servlet時,web伺服器會為每乙個客戶端的訪問請求建立乙個執行緒,並在這個執行緒上呼叫servlet的service方法,因此service方法內如果訪問了同乙個資源的話,就有可能引發執...