溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

servlet線程安全問(wèn)題

發(fā)布時(shí)間:2020-06-16 20:21:58 來(lái)源:網(wǎng)絡(luò) 閱讀:300 作者:yayaAA 欄目:開(kāi)發(fā)技術(shù)


由于默認(rèn)情況下Servlet,在內(nèi)存中只有一個(gè)實(shí)例對(duì)象,當(dāng)多個(gè)瀏覽器并發(fā)訪問(wèn)Servlet時(shí)就有可能產(chǎn)生線程安全問(wèn)題


解決方案:

   1、加鎖--效率降低 synchronized(this){  }

   2、SingleThreadModel接口 -- 不能真的防止線程安全問(wèn)題

服務(wù)器的內(nèi)部維護(hù)一個(gè)對(duì)象池,放servlet的對(duì)象,一個(gè)請(qǐng)求過(guò)來(lái),會(huì)到池里檢查一下有沒(méi)有這個(gè)servlet,如果沒(méi)有,創(chuàng)建一個(gè)給當(dāng)前線程使用,使用完的就放回池里。如果第一個(gè)線程使用的servlet對(duì)象還沒(méi)有還回池里,第二線程過(guò)來(lái)就會(huì)再創(chuàng)建一個(gè)servlet對(duì)象,兩個(gè)servlet對(duì)象會(huì)隨機(jī)被選中給第三個(gè)線程使用。

   3、最終解決方案:

Servlet盡量少用類變量,如果一定要用類變量則用鎖來(lái)防止線程安全問(wèn)題,但是要注意鎖住內(nèi)容應(yīng)該是造成線程安全問(wèn)題的核心代碼,盡量的少鎖主內(nèi)容,減少等待時(shí)間提高servlet的響應(yīng)速度。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI