本文來源於翁舒航的博客,點擊即可跳轉原文觀看!!!(被轉載或者拷貝走的內容可能缺失圖片、視頻等原文的內容)
若網站將鏈接屏蔽,可直接拷貝原文鏈接到地址欄跳轉觀看,原文鏈接:https://www.cnblogs.com/wengshuhang/p/9866459.html
讀鎖:讀讀不互斥
寫鎖:獨占
lock下有讀寫鎖 ReenTrantReadWriteLock
synchronized 是獨占的
1.Java並發庫中ReetrantReadWriteLock實現了ReadWriteLock接口並添加了可重入的特性
2.ReetrantReadWriteLock讀寫鎖的效率明顯高於synchronized關鍵字
3.ReetrantReadWriteLock讀寫鎖的實現中,讀鎖使用共享模式;寫鎖使用獨占模式,換句話說,讀鎖可以在沒有寫鎖的時候被多個線程同時持有,寫鎖是獨占的
4.ReetrantReadWriteLock讀寫鎖的實現中,需要注意的,當有讀鎖時,寫鎖就不能獲得;而當有寫鎖時,除了獲得寫鎖的這個線程可以獲得讀鎖外,其他線程不能獲得讀鎖
關於lock的詳細進階內容可看我的另一篇博客
long long after:
補充: 鎖,這種東西其實就是為了保護數據不被並發給 搞炸了, 然而, 當真正擁有極大量數據並發的時候, 鎖其實已經滿足不了 一些場景了, 因為會造成大量 的資源請求的競爭,只有一個線程搶到資源, 其他大量的請求都等着, 這樣無疑對其他請求來說 是一個很慢的 響應。
可以用其他的方式來解決鎖的問題, 比如事后的補償機制。 至於該不該用鎖,其實也應該根據現場的實際情況來抉擇。 如果 鎖的 速度比其他方式的響應速度 更快 或者差不多,那其實也沒必要用其他方式來做,還是得看實際的情況。
