首页>代码>java多线程类ReentrantReadWriteLock读写锁实例代码及内存缓存工具类>/demo/src/com/zuidaima/thread/MemoryCacheUtil.java
package com.zuidaima.thread; import java.util.HashMap; import java.util.Map; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantReadWriteLock; /** * * 内存缓存工具类 * @author luoy * * @param <K> * @param <V> */ public class MemoryCacheUtil<K, V> { // 缓存 private Map<K, V> cache = new HashMap<K, V>(); private final ReentrantReadWriteLock RL = new ReentrantReadWriteLock(); private final Lock R = RL.readLock(); private final Lock W = RL.writeLock(); /** * 根据key获取缓存信息 * * @param key * * @return */ public V get(K key){ R.lock(); try{ return cache.get(key); } finally { R.unlock(); } } /** * 设置缓存 * * @param key * @param value */ public void put(K key, V value){ W.lock(); try{ cache.put(key, value); } finally { W.unlock(); } } /** * 根据key移除缓存 * * @param key */ public void remove(K key){ W.lock(); try{ cache.remove(key); } finally { W.unlock(); } } /** * 移除所有缓存 */ public void removeAll(){ W.lock(); try{ cache.clear(); } finally { W.unlock(); } } /** * 获得缓存内容,克隆数据,不同的内存块 * * @return */ public Map<K, V> getCache(){ W.lock(); try{ return new HashMap<K, V>(cache); } finally { W.unlock(); } } }
最近下载更多
aisuzhen LV10
2019年9月17日
springbootzxx LV5
2019年7月26日
倪卟懂 LV18
2019年5月7日
afeng992211 LV14
2018年10月12日
tyd888 LV11
2018年9月27日
superman_0001 LV5
2018年7月18日
CLATZJ LV19
2018年3月25日
der2030 LV17
2018年1月23日
15735184511 LV7
2018年1月4日
dulante LV4
2017年10月25日