《Servlet学习笔记》Servlet开发细节-线程安全
Servlet開發細節-線程安全
當多個客戶端并發訪問同一個Servlet時,web服務器會為每一個客戶端的訪問請求創建一個線程,并在這個線程上調用Servlet的service方法,因此service方法內如果訪問了通過一個資源的話,就有可能引發線程安全問題。
使用同步塊可以解決線程安全問題,但是會使并發串行化。
如果某個Servlet實現了SingleThreadModel接口,那么Servlet引擎將以單線程模式來調用其service方法。
SingThreadModel接口中沒有定義任何方法,只要在Servlet類的定義中增加實現SingleThreadModel接口的聲明即可。
對于實現SingleThreadModel接口的Servlet,Servlet引擎仍然對該Servlet的多線程并發訪問,其采用的方式是產生多個Servlet實例對象,并發的每個線程分別調用一個獨立的Servlet實例對象。
實現SingleThreadModel接口并不能真正解決Servlet的線程安全問題,因為Servlet引擎會創建多個Servlet實例對象,而真正意義上解決多線程安全問題是指一個Servlet實例對象被多個線程同時調用的問題。事實上,在Servlet API 2.4中,已經將SingleThreadModel標記為Deprecated(過時的)。
轉載于:https://blog.51cto.com/zlfwmm/1614515
總結
以上是生活随笔為你收集整理的《Servlet学习笔记》Servlet开发细节-线程安全的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到前任哭了代表什么
- 下一篇: 做梦梦到两条蛇是什么意思