如果有很多线程同时读取数据而只有很少线程写入数据,那么允许读者线程共享访问,对性能有很大提升,在此情况下使用读/写锁。读锁可以被多个读操作共用,但排斥所有写操作;写锁排斥所有其他的读操作和写操作。
private ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
private Lock readLock = rwl.readLock();
private Lock writeLock = rwl.writeLock();
private double read() {
readLock.lock();
try {...}
finally { readLock.unlock();}
}
private void write() {
writeLock.lock();
try {...}
finally { writeLock.unlock();}
}