久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      java面試——樂(lè)觀鎖和悲觀鎖

      java面試——樂(lè)觀鎖和悲觀鎖

      面試題目:

      樂(lè)觀鎖和悲觀鎖的區(qū)別

      (學(xué)習(xí)視頻分享:java教學(xué)視頻)

      一、樂(lè)觀鎖

      總是認(rèn)為不會(huì)產(chǎn)生并發(fā)問(wèn)題,每次去取數(shù)據(jù)的時(shí)候總認(rèn)為不會(huì)有其他線程對(duì)數(shù)據(jù)進(jìn)行修改,因此不會(huì)上鎖,但是在更新時(shí)會(huì)判斷其他線程在這之前有沒(méi)有對(duì)數(shù)據(jù)進(jìn)行修改,一般會(huì)使用版本號(hào)機(jī)制或CAS操作實(shí)現(xiàn)

      version方式:

      一般是在數(shù)據(jù)表中加上一個(gè)數(shù)據(jù)版本號(hào)version字段,表示數(shù)據(jù)被修改的次數(shù),當(dāng)數(shù)據(jù)被修改時(shí),version值會(huì)加一。當(dāng)線程A要更新數(shù)據(jù)值時(shí),在讀取數(shù)據(jù)的同時(shí)也會(huì)讀取version值,在提交更新時(shí),若剛才讀取到的version值為當(dāng)前數(shù)據(jù)庫(kù)中的version值相等時(shí)才更新,否則重試更新操作,直到更新成功。

      update table set x=x+1, version=version+1 where id=#{id} and version=#{version};

      (相關(guān)面試題推薦:java面試題及答案)

      CAS操作方式:

      即compare and swap 或者 compare and set,涉及到三個(gè)操作數(shù),數(shù)據(jù)所在的內(nèi)存值,預(yù)期值,新值。當(dāng)需要更新時(shí),判斷當(dāng)前內(nèi)存值與之前取到的值是否相等,若相等,則用新值更新,若失敗則重試,一般情況下是一個(gè)自旋操作,即不斷的重試。

      二、悲觀鎖

      總是假設(shè)最壞的情況,每次取數(shù)據(jù)時(shí)都認(rèn)為其他線程會(huì)修改,所以都會(huì)加鎖(讀鎖、寫(xiě)鎖、行鎖等),當(dāng)其他線程想要訪問(wèn)數(shù)據(jù)時(shí),都需要阻塞掛起??梢砸揽繑?shù)據(jù)庫(kù)實(shí)現(xiàn),如行鎖、讀鎖和寫(xiě)鎖等,都是在操作之前加鎖,在Java中,synchronized的思想也是悲觀鎖。

      三、適用場(chǎng)景

      悲觀鎖:比較適合寫(xiě)入操作比較頻繁的場(chǎng)景,如果出現(xiàn)大量的讀取操作,每次讀取的時(shí)候都會(huì)進(jìn)行加鎖,這樣會(huì)增加大量的鎖的開(kāi)銷,降低了系統(tǒng)的吞吐量。

      樂(lè)觀鎖:比較適合讀取操作比較頻繁的場(chǎng)景,如果出現(xiàn)大量的寫(xiě)入操作,數(shù)據(jù)發(fā)生沖突的可能性就會(huì)增大,為了保證數(shù)據(jù)的一致性,應(yīng)用層需要不斷的重新獲取數(shù)據(jù),這樣會(huì)增加大量的查詢操作,降低了系統(tǒng)的吞吐量。

      總結(jié):兩種所各有優(yōu)缺點(diǎn),讀取頻繁使用樂(lè)觀鎖,寫(xiě)入頻繁使用悲觀鎖。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)