讀鎖跟寫鎖的區別


 

本文來源於翁舒航的博客,點擊即可跳轉原文觀看!!!(被轉載或者拷貝走的內容可能缺失圖片、視頻等原文的內容)

若網站將鏈接屏蔽,可直接拷貝原文鏈接到地址欄跳轉觀看,原文鏈接:https://www.cnblogs.com/wengshuhang/p/9866459.html

 

讀鎖:讀讀不互斥
寫鎖:獨占

lock下有讀寫鎖 ReenTrantReadWriteLock
synchronized 是獨占的

1.Java並發庫中ReetrantReadWriteLock實現了ReadWriteLock接口並添加了可重入的特性
2.ReetrantReadWriteLock讀寫鎖的效率明顯高於synchronized關鍵字
3.ReetrantReadWriteLock讀寫鎖的實現中,讀鎖使用共享模式;寫鎖使用獨占模式,換句話說,讀鎖可以在沒有寫鎖的時候被多個線程同時持有,寫鎖是獨占的
4.ReetrantReadWriteLock讀寫鎖的實現中,需要注意的,當有讀鎖時,寫鎖就不能獲得;而當有寫鎖時,除了獲得寫鎖的這個線程可以獲得讀鎖外,其他線程不能獲得讀鎖

關於lock的詳細進階內容可看我的另一篇博客

java並發編程的藝術(三)---lock源碼

long long after:
補充: 鎖,這種東西其實就是為了保護數據不被並發給 搞炸了, 然而, 當真正擁有極大量數據並發的時候, 鎖其實已經滿足不了 一些場景了, 因為會造成大量 的資源請求的競爭,只有一個線程搶到資源, 其他大量的請求都等着, 這樣無疑對其他請求來說 是一個很慢的 響應。
可以用其他的方式來解決鎖的問題, 比如事后的補償機制。 至於該不該用鎖,其實也應該根據現場的實際情況來抉擇。 如果 鎖的 速度比其他方式的響應速度 更快 或者差不多,那其實也沒必要用其他方式來做,還是得看實際的情況。


免責聲明!

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



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