本帖最后由 李人 于 2021-5-18 15:56 编辑
最上面的注释是要求!!!
[Java] 纯文本查看 复制代码 /**
* 一个简单的对象缓存Service,只允许并发读,不允许并发读写
*
*/
@Service
public class CacheService {
private final Map<String, Object> map = new HashMap<>();
private final ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();
/**
* 获取一个 key 对应的 value
*
* @param key
* @return
*/
public final Object get(String key) {
// 获取读锁
rwLock.readLock().tryLock();
try {
return map.get(key);
} finally {
// 释放读锁
rwLock.readLock().unlock();
}
}
/**
* 设置 key 对应的 value,并返回旧的 value
*
* @param key
* @param value
* @return
*/
public final Object put(String key, Object value) {
// 获取写锁
rwLock.writeLock().tryLock();
try {
return map.put(key, value);
} finally {
// 释放写锁
rwLock.writeLock().unlock();
}
}
} |