写在前面
学习本文前,建议先了解一下 可重入锁 ReentrantLock ,理解一下可重入
是个什么概念
1.概念
既然已经有了 可重入锁 ReentrantLock,为什么还要有 可重入读写锁 ReentrantReadWriteLock
呢??
因为 可重入锁 ReentrantLock
和 synchronized
一样,都是属于独占锁
。所谓 独占,即:同一时间只能有一个线程持有锁
。ReentrantReadWriteLock 的出现, 就是解决 ReentrantLock 独占锁 带来的性能问题。使用 ReentrantLock 无论是 "写/写"线程、"读/读"线程、"读/写"线程之间的工作都是互斥,同时只能有一个线程进入同步区域。
然而,在工作的大多场景下,"读/读"线程之间并不会存在互斥的关系,只有"读/写"线程 或 "写/写