使用ReadWriteLock的读写锁 实现 模拟缓存的 功能
package cn.zto.lock;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
//模仿缓存
public class CacheDateTest {
ReadWriteLock rwl = new ReentrantReadWriteLock();
Map<Object, Object> map = new HashMap<Object, Object>();
public Object get(Object key){
rwl.readLock().lock();
Object value = null;
boolean flag ;
value = map.get(key);
if (value == null) {
flag = false;
rwl.readLock().unlock();
rwl.writeLock().lock();
if (!flag) {
value = " 初始化 ";
map.put(key, value);
flag = true;
}
rwl.writeLock().unlock();
rwl.readLock().lock();
}
rwl.readLock().unlock();
return value;
}
}
本文介绍了一种利用ReadWriteLock实现缓存的方法。通过ReentrantReadWriteLock创建读写锁,并结合HashMap来模拟缓存行为。当获取缓存值时,先进行读加锁,检查缓存是否存在;若不存在,则释放读锁、获取写锁并更新缓存。
168万+

被折叠的 条评论
为什么被折叠?



