创建一个java自己的缓存,包括kv存取
public class CacheUtil {
private static Map<String, Object> cacheMap = new HashMap<String, Object>();
private static ReadWriteLock lock = new ReentrantReadWriteLock();
/*
* 添加缓存
* @Param obj 塞入的值
* @Param key
* */
public static String set(Object obj, String key) {
lock.writeLock().lock();//加写锁
cacheMap.put(key, obj);
lock.writeLock().unlock();//释放写锁
return key;
}
/*
* 查询缓存
* @Param key
* */
public static Object get(String key) {
lock.readLock().lock(); // 先加读锁
Object value = null;
try {
value = cacheMap.get(key);
if (value == null) { // 若不存在cache中
lock.readLock().unlock(); // 若果value为空 则释放掉读锁,让该线程获取写锁,而其他线程只能等待该写锁释放,才能在进读锁
lock.writeLock().lock(); // 加写锁
value = cacheMap.get(key);