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日
最近浏览更多
yyh1252  LV8 2023年7月25日
dixiu000  LV4 2023年4月14日
heqian  LV17 2022年10月17日
crosa_Don  LV18 2022年7月6日
MoonSight  LV1 2022年7月1日
liys1234  LV9 2022年4月27日
一道念  LV10 2022年1月29日
尹恒yingying  LV18 2021年4月14日
花椒谢霆锋  LV8 2021年3月2日
jay1992  LV14 2021年2月6日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友