简介:
ReentrantLock中所有操作都是具有互斥性的,而现实中有一种场景就是读得特别频繁,但是写得特别少,在这样的场景下,如果可以做到读与读之间不互斥的话,那么就可以大大提高并发效率,所以对应的出现了ReentrantLReadWriteLock。ReentrantReadWriteLock可以做到:读读共享,读写互斥,写写互斥。
其实现方式就是:在内部封装了两把锁,一把独占锁,一把共享锁,获取独占锁的线程之间要进行同步;获取独占锁与获取共享锁之间的线程也要进行同步;获取共享锁的线程之间不需要进行同步。
使用举例:
public class ReentrantReadWriteLockDemo {
private ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();
private ReentrantReadWriteLock.ReadLock readLock = rwLock.readLock();
private ReentrantRead