使用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;
}
}
本文介绍了一种使用 Java 中的 ReadWriteLock 实现缓存的方法。通过 ReentrantReadWriteLock 控制读写操作,保证了多线程环境下数据的一致性和并发效率。当缓存中不存在指定键的数据时,采用写锁进行数据初始化。
168万+

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



