1. 优势
读写分离锁可以提升程序的并发读,因为在大多数情况下都是读请求那么此时读与读之间是可以并行执行的不会产生数据不一致问题,只有读写,写写操作才是互斥的
2. 读写锁实现
package com.gy.readwritelock;
public class ReadWriteLock {
private int readingReaders;
private int waitingReaders;
private int writingWriters;
private int waitingWriters;
public synchronized void readLock() throws InterruptedException {
this.waitingReaders++;
try {
while(writingWriters > 0) {
this.wait();
}
this.readingReaders++;
} finally {
this.waitingReaders--;
}
}
public synchronized void readUnlock() {
this.readingReaders--;
this.notifyAll();
}
public synchronized void writeLock() throws InterruptedException {
this.waitingWriters++;
try {
while(this.readingReaders > 0 || this.writingWriters > 0)
this.wait();
this.writingWriters++;
} finally {
this.waitingWriters--;
}
}
public synchronized void writeUnlock() {
this.writingWriters--;
this.notifyAll();
}
}