ReentrantReadWriteLock 和ReentrantLock 的区别
ReentrantLock
- 单一锁:
ReentrantLock
是一种普通的重入锁,它仅提供独占锁(写锁),不区分读锁和写锁。 - 适用于写操作频繁:由于它只提供一种锁机制,适合那些写操作频繁,读写操作无法明确区分或者没有大量读操作的场景。
- 提供高级功能:
ReentrantLock
提供了比synchronized
关键字更多的高级功能,如公平锁、非公平锁、尝试锁定(tryLock)和中断锁定(lockInterruptibly)等。 - 性能:对于读写操作不太频繁或无法分离读写操作的场景,
ReentrantLock
的性能较好。
ReentrantReadWriteLock
- 读写锁:
ReentrantReadWriteLock
提供了两种锁:读锁和写锁。读锁可以同时被多个线程持有,而写锁是独占的。 - 适用于读操作频繁:读锁可以允许多个线程同时读取而不互相干扰,适合读操作频繁的场景。写锁则用于需要修改共享资源的操作。
- 提升读操作性能:在读多写少的场景下,
ReentrantReadWriteLock
可以显著提升读操作的性能,因为读操