版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lhc2207221755/article/details/83591970
对于读多写少的场景,我们此时应该允许读锁的多次重入,提高读操作的并发性,在这种情况下,我们将读写锁分离。
/**
* 线程安全的local cache demo
*/
class LocalCache {
private ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private Lock writeLock = lock.writeLock();
private Lock readLock = lock.readLock();
private Map<String, String> data = new HashMap<>();
public String get(String key) {
readLock.lock();
try {
if (data.containsKey(key)) {
return data.get(key);
}
return "";
} finally {
readLock.unlock();
}
}
public void set(String key, String value) {
writeLock.lock();
try {
data.put(key, value);
} finally {
writeLock.unlock();
}
}
public void clear() {
writeLock.lock();
try {
data.clear();
} finally {
writeLock.unlock();
}
}
}