首页 > 系统服务 > 详细

代码实现一个Lrucache

时间:2020-06-17 15:14:51      阅读:78      评论:0      收藏:0      [点我收藏+]
/**伪代码实现一个lru缓存 关键  1、linkedhashmap 2、超时时间 value值要包装成一个 包含 过期时间的对象  3、*/


class BlockingLinkedHashmap<k, v> implemnts LinkedHashMap<k, v>{
	private ReentrantLock lock;


	private v get(k key){
		try{
			lock.lock();
			return super.get(key);
		}finally{
			lock.unlock();
		}

	}

	//下面省略好多getset 主要是加个lock


}

class ValueWrapper<v>{
	private v value;

	private long timeout;

	private Date c;

	public ValueWrapper(v value){

	}

	public ValueWrapper(v value, long tiemout){
		this.value = value;
		this.timeout = time;
		this.updateTime = new Date();
	}

	public v getValue(){
		if(timeout !=null ){
			Date now = new Date();
			updateTime = now;
			if(now.getTime - updateTime > timeout){
				return null;
			}
		}
		return v;
	}
}


class LruCache<k, v>{
 
 private  BlockingLinkedHashmap<k, v> map ;
	
	init(){
	map = new BlockingLinkedHashmap();

	}


	public void set(k key, v value, long timeout){
		map.put(key, new ValueWrapper<v>(value, timeout));
	}



	public void set(k key, v value){
		map.put(key, new ValueWrapper<v>(value));
	}

	public v get(k key){
	ValueWrapper<v> valueWrapper;
	valueWrapper = map.remove(key);
		if(valueWrapper == null){
			return null;
		}else{
			return valueWrapper.getValue();
		}

	}


}

 

代码实现一个Lrucache

原文:https://www.cnblogs.com/tecnologycc/p/13152341.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!