JavaWeb_多個HTTP請求同時訪問怎么處理?

Servlet對并發(fā)的處理

Tomcat容器處理多并發(fā)采用單例模式烘跺、多線程處理方式

只要webapp被發(fā)布到web容器中的時候,servlet只會在發(fā)布的時候?qū)嵗淮沃蓿瑂ervlet在其生命周期中只有在將項目給移除或服務(wù)器stop的時候才會銷毀滤淳,那么一個web項目從發(fā)布到運行只存在一個servlet的實例。

servlet容器中包含有線程池砌左,規(guī)定了線程池當(dāng)中承載線程的數(shù)量

當(dāng)請求到達時脖咐,Servlet容器通過調(diào)度線程(Dispatchaer Thread) 調(diào)度它管理下線程池中等待執(zhí)行的線程(Worker Thread)給請求者

出現(xiàn)不同的線程同一時間訪問同一個servlet的時候铺敌,其實servlet的對象只有一個,但是由于是tomcat支持多線程的原因屁擅,每個客戶端請求執(zhí)行的servlet中的函數(shù)都是在自己所支配的那一小段線程里面執(zhí)行了偿凭,也就是說兩個用戶都登陸,都訪問login方法派歌,但是這是有用的是一個servlet但是局部的方法是放在不同的線程里面的弯囊。

也就是說,整個過程servlet實例只有一個胶果,供多個線程使用匾嘱,每次servlet被訪問都會被線程池的操作線程選出并提供一個新的線程進行操作

servlet是線程安全的嗎?

Servlet體系結(jié)構(gòu)是建立在Java多線程機制之上的稽物,它的生命周期是由Web容器負責(zé)的奄毡。

當(dāng)客戶端第一次請求某個Servlet時,Servlet容器將會根據(jù)web.xml配置文件實例化這個Servlet類贝或。當(dāng)有新的客戶端請求該Servlet時吼过,一般不會再實例化該Servlet類,也就是有多個線程在使用這個實例咪奖。Servlet容器會自動使用線程池等技術(shù)來支持系統(tǒng)的運行

在Serlet中避免使用實例變量是保證Servlet線程安全的最佳選擇盗忱。從Java 內(nèi)存模型也可以知道,方法中的臨時變量是在棧上分配空間羊赵,而且每個線程都有自己私有的椞说瑁空間,所以它們不會影響線程的安全昧捷。

Servlet的線程安全問題只有在大量的并發(fā)訪問時才會顯現(xiàn)出來闲昭,并且很難發(fā)現(xiàn),因此在編寫Servlet程序時要特別注意靡挥。線程安全問題主要是由實例變量造成的序矩,因此在Servlet中應(yīng)避免使用實例變量。如果應(yīng)用程序設(shè)計無法避免使用實例變量跋破,那么使用同步來保護要使用的實例變量簸淀,但為保證系統(tǒng)的最佳性能,應(yīng)該同步可用性最小的代碼路徑毒返。

線程安全和不安全的變量:

1租幕、靜態(tài)變量:線程非安全。

靜態(tài)變量即類變量拧簸,位于方法區(qū)劲绪,為所有對象共享,共享一份內(nèi)存,一旦靜態(tài)變量被修改珠叔,其他對象均對修改可見蝎宇,故線程非安全。

2祷安、實例變量:單例模式(只有一個對象實例存在)線程非安全姥芥,非單例線程安全。

實例變量為對象實例私有汇鞭,在虛擬機的堆中分配凉唐,若在系統(tǒng)中只存在一個此對象的實例,在多線程環(huán)境下霍骄,“猶如”靜態(tài)變量那樣台囱,被某個線程修改后,其他線程對修改均可見读整,故線程非安全簿训;如果每個線程執(zhí)行都是在不同的對象中,那對象與對象之間的實例變量的修改將互不影響米间,故線程安全强品。

3、局部變量:線程安全屈糊。

每個線程執(zhí)行時將會把局部變量放在各自棧幀的工作內(nèi)存中的榛,線程間不共享,故不存在線程安全問題逻锐。

參考博文:

https://www.cnblogs.com/GtShare/p/8033637.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夫晌,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子昧诱,更是在濱河造成了極大的恐慌晓淀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盏档,死亡現(xiàn)場離奇詭異要糊,居然都是意外死亡,警方通過查閱死者的電腦和手機妆丘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來局劲,“玉大人勺拣,你說我怎么就攤上這事∮闾睿” “怎么了药有?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我愤惰,道長苇经,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任宦言,我火速辦了婚禮扇单,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奠旺。我一直安慰自己蜘澜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布响疚。 她就那樣靜靜地躺著鄙信,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忿晕。 梳的紋絲不亂的頭發(fā)上装诡,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音践盼,去河邊找鬼鸦采。 笑死,一個胖子當(dāng)著我的面吹牛宏侍,可吹牛的內(nèi)容都是我干的赖淤。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼谅河,長吁一口氣:“原來是場噩夢啊……” “哼咱旱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绷耍,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤吐限,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后褂始,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诸典,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年崎苗,在試婚紗的時候發(fā)現(xiàn)自己被綠了狐粱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡胆数,死狀恐怖肌蜻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情必尼,我是刑警寧澤蒋搜,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布篡撵,位于F島的核電站,受9級特大地震影響豆挽,放射性物質(zhì)發(fā)生泄漏育谬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一帮哈、第九天 我趴在偏房一處隱蔽的房頂上張望膛檀。 院中可真熱鬧,春花似錦但汞、人聲如沸宿刮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽僵缺。三九已至,卻和暖如春踩叭,著一層夾襖步出監(jiān)牢的瞬間磕潮,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工容贝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留自脯,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓斤富,卻偏偏與公主長得像膏潮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子满力,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 0 系列目錄# WEB請求處理 WEB請求處理一:瀏覽器請求發(fā)起處理 WEB請求處理二:Nginx請求反向代理 本...
    七寸知架構(gòu)閱讀 13,919評論 22 190
  • JAVA面試題 1焕参、作用域public,private,protected,以及不寫時的區(qū)別答:區(qū)別如下:作用域 ...
    JA尐白閱讀 1,146評論 1 0
  • Based on Java? Servlet Specification v3.1 [TOC] Servlet和S...
    0x70e8閱讀 1,310評論 0 7
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,092評論 1 32
  • 給閨蜜的一組圖只調(diào)了色微處理了下 還不太會正在逐漸摸索的我呀 要是什么事情都好好做就能做好就好啦 相機是索尼a60...
    朝朝夕夕兮閱讀 343評論 2 3