Java編程:悲觀鎖、樂觀鎖的區別及使用情境

來源:互聯網
上載者:User

標籤:取資料   比較   lock   java編程   讀取   nbsp   擷取   缺點   一致性   

定義:

悲觀鎖(Pessimistic Lock): 
每次擷取資料的時候,都會擔心資料被修改,所以每次擷取資料的時候都會進行加鎖,確保在自己使用的過程中資料不會被別人修改,使用完成後進行資料解鎖。由於資料進行加鎖,期間對該資料進行讀寫的其他線程都會進行等待。

樂觀鎖(Optimistic Lock): 
每次擷取資料的時候,都不會擔心資料被修改,所以每次擷取資料的時候都不會進行加鎖,但是在更新資料的時候需要判斷該資料是否被別人修改過。如果資料被其他線程修改,則不進行資料更新,如果資料沒有被其他線程修改,則進行資料更新。由於資料沒有進行加鎖,期間該資料可以被其他線程進行讀寫操作。

適用情境:

悲觀鎖:比較適合寫入操作比較頻繁的情境,如果出現大量的讀取操作,每次讀取的時候都會進行加鎖,這樣會增加大量的鎖的開銷,降低了系統的輸送量。

樂觀鎖:比較適合讀取操作比較頻繁的情境,如果出現大量的寫入操作,資料發生衝突的可能性就會增大,為了保證資料的一致性,應用程式層需要不斷的重新擷取資料,這樣會增加大量的查詢操作,降低了系統的輸送量。

總結:兩種所各有優缺點,讀取頻繁使用樂觀鎖,寫入頻繁使用悲觀鎖。

Java編程:悲觀鎖、樂觀鎖的區別及使用情境

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.