悲觀鎖和樂觀鎖的區別


1.悲觀鎖是當線程拿到資源時,就對資源上鎖,並在提交后,才釋放鎖資源,其他線程才能使用資源。

2.樂觀鎖是當線程拿到資源時,上樂觀鎖,在提交之前,其他的鎖也可以操作這個資源,當有沖突的時候,並發機制會保留前一個提交,打回后一個提交,讓后一個線程重新獲取資源后,再操作,然后提交。和git上傳代碼一樣,兩個線程都不是直接獲取資源本身,而是先獲取資源的兩個copy版本,然后在這兩個copy版本上修改。

3.悲觀鎖和樂觀鎖在並發量低的時候,性能差不多,但是在並發量高的時候, 樂觀鎖的性能遠遠優於悲觀鎖。

4.我們常用的synchronized是悲觀鎖,lock是樂觀鎖 。他們之間的區別詳見於Java同步鎖——lock與synchronized 的區別【轉】

5.還有一個樂觀鎖的例子 https://www.cnblogs.com/darrenqiao/p/9211447.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM