讀寫鎖 ReentrantReadWriteLock 與 互斥鎖 的效率
ReentrantReadWriteLock
一種支援一寫多讀的同步鎖,讀寫分離,可分別分配讀鎖、寫鎖
支援多次分配讀鎖,使多個讀操作可以併發執行
互斥規則
寫 - 寫:互斥,阻塞
讀 - 寫:互斥,讀阻塞寫、寫阻塞讀
讀 - 讀:不互斥,不阻塞
在讀操作遠遠高於寫操作的環境中,可在保證執行緒安全的情況下,提高執行效率
我們可以寫一個例子,就是讀的操作多,寫的操作少,我們可以比較一下,使用讀寫鎖和互斥鎖的執行的效率
讀寫鎖的程式碼
測試程式碼:
執行結果
測試互斥鎖的程式碼:其實就是修改了鎖為lock,其他都沒有改變
測試結果:
可以發現 讀寫鎖 對效率的提升有很大的幫助
相關文章
- 讀寫鎖ReentrantReadWriteLock
- 讀寫鎖 ReentrantReadWriteLock
- Lock介面、重入鎖ReentrantLock、讀寫鎖ReentrantReadWriteLockReentrantLock
- Go語言中的互斥鎖和讀寫鎖(Mutex和RWMutex)GoMutex
- Golang 讀寫鎖RWMutex 互斥鎖Mutex 原始碼詳解GolangMutex原始碼
- ReentrantReadWriteLock讀寫鎖及其在 RxCach
- Java併發——讀寫鎖ReentrantReadWriteLockJava
- 深入理解讀寫鎖ReentrantReadWriteLock
- golang RWMutex讀寫互斥鎖原始碼分析GolangMutex原始碼
- Java 讀寫鎖 ReentrantReadWriteLock 原始碼分析Java原始碼
- 原始碼分析:ReentrantReadWriteLock之讀寫鎖原始碼
- 面試官:你說說互斥鎖、自旋鎖、讀寫鎖、悲觀鎖、樂觀鎖的應用場景面試
- MySQL MyISAM引擎的讀鎖與寫鎖MySql
- ReentrantReadWriteLock讀寫鎖及其在 RxCache 中的使用
- Golang 基礎值速學之二十一(讀寫鎖互斥鎖)Golang
- 深刨顯式鎖ReentrantLock原理及其與內建鎖的區別,以及讀寫鎖ReentrantReadWriteLock使用場景ReentrantLock
- Mysql(MyISAM)的讀寫互斥鎖問題的解決方法MySql
- 執行緒同步與互斥:互斥鎖執行緒
- AQS之ReentrantReadWriteLock寫鎖AQS
- Java併發程式設計之鎖機制之ReentrantReadWriteLock(讀寫鎖)Java程式設計
- 物聯網學習教程——執行緒同步與互斥:讀寫鎖執行緒
- Java併發程式設計-讀寫鎖(ReentrantReadWriteLock)Java程式設計
- 輕鬆掌握java讀寫鎖(ReentrantReadWriteLock)的實現原理Java
- 【go】golang中鎖的用法-互斥鎖Golang
- 淺談Java中的鎖:Synchronized、重入鎖、讀寫鎖Javasynchronized
- Java中的讀寫鎖ReentrantReadWriteLock詳解,存在一個小缺陷Java
- liteos互斥鎖(七)
- Java併發指南10:Java 讀寫鎖 ReentrantReadWriteLock 原始碼分析Java原始碼
- Java使用讀寫鎖替代同步鎖Java
- java原始碼-ReentrantReadWriteLock寫鎖介紹Java原始碼
- C 語言的 互斥鎖、自旋鎖、原子操作
- Java中的讀/寫鎖Java
- Python中的互斥鎖Python
- 執行緒的互斥鎖執行緒
- python之GIL全域性直譯器鎖,自定義互斥鎖,死鎖與遞迴鎖Python遞迴
- 透過互斥鎖+條件量的方式實現同步與互斥
- Java 種15種鎖的介紹:公平鎖,可重入鎖,獨享鎖,互斥鎖等等Java
- Java 種15種鎖的介紹:公平鎖,可重入鎖,獨享鎖,互斥鎖等等...Java