我面试的时候问了一个问题:如何实现getter和setter独占写入HashMap
和非独占读取。假设如下代码:
public class MyClass {
private HashMap map = new HashMap();
// HOW TO implement Getter and Setter for exclusive writing and non-exclusive reading
}
最佳答案
试试这个
class MyClass<K, V> {
private HashMap<K, V> map = new HashMap<K, V>();
private ReadWriteLock rwl = new ReentrantReadWriteLock();
private Lock rl = rwl.readLock();
private Lock wl = rwl.writeLock();
public V get(Object k) {
rl.lock();
try {
return map.get(k);
} finally {
rl.unlock();
}
}
public V put(K k, V v) {
wl.lock();
try {
return map.put(k, v);
} finally {
wl.unlock();
}
}
}
关于java - 如何在不锁定 `get()` 方法的情况下制作线程安全的 HashMap?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15729367/