前面介绍的都是排他锁(独占锁),下面我们来介绍以下读写锁
private final ReadWriteLock lock = new ReentrantReadWriteLock();
//拿到读锁
private final Lock getLock = lock.readLock();
//拿到写锁
private final Lock setLock = lock.writeLock();
//使用和Lock一样注意将unlock()放在finally中
getLock.lock();
try{
}finally{
getLock.unlock();
}
在应用中,读写操作的比例大概为十比一
,而且读的操作是可以同时进行,并且不允许写操作,但写操作时是不允许其他操 作的,从而保证了安全性。
用来实现等待通知的效果,相当于syn里的notify和notifyAll。
与syn不同用Lock和Condition实现等待通知大多数时候推荐使用signal而不是signalAll(根据业务选择选择)