成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Servlet線程安全的解決方法

開發 后端
當兩個或多個線程同時訪問同一個Servlet時,可能會發生多個線程同時訪問同一資源的情況,數據可能會變得不一致,所以就很容易造成一系列的一些安全性問題。

Servlet體系結構是建立在Java多線程機制之上的,它的生命周期是由Web容器負責的。

當客戶端第一次請求某個Servlet時,Servlet容器將會根據web.xml配置文件實例化這個Servlet類。當有新的客戶端請求該Servlet時,一般不會再實例化該Servlet類,也就是有多個線程在使用這個實例。

這樣的話,當兩個或多個線程同時訪問同一個Servlet時,可能會發生多個線程同時訪問同一資源的情況,數據可能會變得不一致,所以就很容易造成一系列的一些安全性問題。

解決此類的方法也有多

1、實現 SingleThreadModel 接口

該接口指定了系統如何處理對同一個Servlet的調用。如果一個Servlet被這個接口指定,那么在這個Servlet中的service方法將不會有兩個線程被同時執行,當然也就不存在線程安全的問題。這種方法只要繼承這個接口就行了

  1. public class XXXXX extends HttpServlet implements SingleThreadModel {  
  2. …………  

2、同步對共享數據的操作

使用synchronized 關鍵字能保證一次只有一個線程可以訪問被保護的區段,在本論文中可以通過同步塊操作來保證Servlet的線程安全。同步后的代碼如下:

  1. Public class XXXXXX extends HttpServlet {  
  2.     …………  
  3. synchronized (this){XXXX}  
  4.  

3、避免使用實例變量

線程安全問題還有些是由實例變量造成的,只要在Servlet里面的任何方法里面都不使用實例變量,那么該Servlet就是線程安全的。

對上面的三種方法進行測試,可以表明用它們都能設計出線程安全的Servlet程序。但是,如果一個Servlet實現了SingleThreadModel接口,Servlet引擎將為每個新的請求創建一個單獨的Servlet實例,這將引起大量的系統開銷。SingleThreadModel在Servlet2.4中已不再提倡使用;同樣如果在程序中使用同步來保護要使用的共享的數據,也會使系統的性能大大下降。這是因為被同步的代碼塊在同一時刻只能有一個線程執行它,使得其同時處理客戶請求的吞吐量降低,而且很多客戶處于阻塞狀態。另外為保證主存內容和線程的工作內存中的數據的一致性,要頻繁地刷新緩存,這也會大大地影響系統的性能。所以在實際的開發中也應避免或最小化Servlet 中的同步代碼;在Serlet中避免使用實例變量是保證Servlet線程安全的最佳選擇。從Java 內存模型也可以知道,方法中的臨時變量是在棧上分配空間,而且每個線程都有自己私有的棧空間,所以它們不會影響線程的安全。

小結

Servlet的線程安全問題只有在大量的并發訪問時才會顯現出來,并且很難發現,因此在編寫Servlet程序時要特別注意。線程安全問題主要是由實例變量造成的,因此在Servlet中應避免使用實例變量。如果應用程序設計無法避免使用實例變量,那么使用同步來保護要使用的實例變量,但為保證系統的最佳性能,應該同步可用性最小的代碼路徑。

【編輯推薦】

  1. JSP+JavaBean+Servlet結構工作原理淺析
  2. Servlet頁面跳轉實現方法的區別
  3. Servlet多線程的相關問題淺析
  4. Servlet容器之安全多線程問題
  5. JSP Servlet開發最初那點事
責任編輯:雪峰 來源: CSDN博客
相關推薦

2009-07-03 18:13:28

Servlet線程安全

2016-09-23 20:46:53

2009-07-24 10:42:28

CLR線程池

2016-04-20 18:40:23

2010-07-29 15:28:47

Flex安全沙箱

2010-03-22 10:59:24

Java Socket

2023-08-02 07:39:07

多線程開發資源

2010-07-15 14:01:12

telnet亂碼

2009-07-03 16:53:11

Servlet容器

2010-08-03 09:12:52

Flex安全沙箱

2011-03-01 13:40:45

500 OOPS

2009-09-10 09:35:25

Linq語句

2010-10-13 17:22:12

MySQL查詢亂碼

2010-04-20 16:46:41

Oracle數據庫密碼

2009-12-17 10:09:02

ssh超時斷開

2023-04-06 15:21:34

IIoT自動化

2011-05-18 14:00:30

在線備份

2010-07-29 15:44:54

Flex安全沙箱

2023-10-26 08:16:20

C++線程

2011-09-16 15:36:47

網絡環路
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久精品免费看国产高清 | 一级毛片视频免费观看 | 亚洲一区二区三区视频 | 国产成人精品在线播放 | 亚洲精品自拍 | 天天久久 | 欧美三区| 九九导航| 免费国产视频 | 九九热免费视频在线观看 | 欧美激情精品久久久久久 | 久久夜夜| 日韩精品在线播放 | 亚洲欧美日韩精品久久亚洲区 | 热99精品视频 | 在线天堂免费中文字幕视频 | 久久久99国产精品免费 | 羞羞免费网站 | 亚洲色在线视频 | 亚洲理论在线观看电影 | 日韩一区二区在线看 | 亚洲va在线va天堂va狼色在线 | 91在线精品播放 | 色偷偷噜噜噜亚洲男人 | 国产专区视频 | 亚洲精品一区二区三区 | 日韩在线免费视频 | 国产高清在线观看 | 99久久精品免费看国产小宝寻花 | 日本 欧美 三级 高清 视频 | 久久综合激情 | 中文在线观看视频 | 国产激情精品视频 | 青青久久 | 国产伦一区二区三区久久 | 日韩精品免费在线观看 | 亚洲欧美久久 | 成人午夜 | 一区中文字幕 | 99精品国产一区二区三区 | 一区二区不卡高清 |