使用场景
- 同一份数据 或者 同一个对象,存在被多个线程同时读取内容 或者 同时写入内容的情况。
- 逻辑上应该允许多人同时读,但只能同时只有一人写,并且写的时候不允许有人读。
使用方法
1.创建读写锁
private ReentrantReadWriteLock mReadWriteLock = new ReentrantReadWriteLock();
2.分别对读和写创建独立的上锁解锁方法
public void lockRead() {
mReadWriteLock.readLock().lock();
}
public void unlockRead() {
mReadWriteLock.readLock().unlock();
}
public void lockWrite() {
mReadWriteLock.writeLock().lock();
}
public void unlockWrite() {
mReadWriteLock.writeLock().unlock();
}
3.在需要的地方使用读或写
lockRead();
...
unlockRead();
lockWrite();
...
unlockWrite();