自己实现的一个很简单的对象缓存器。顺便请教大家一些比较优秀的缓存器实现思路。

前段时间写的ConnectionPool已经可用运行了,现在转向CachePool,偶还是菜鸟所以只是利用了j2se的api简单的实现了一个对象缓存器,顺便希望大家能够说说缓存器的设计思路(暂时不考虑分布式应用)。谢谢大家了!

这是缓存器核心类。
package cc.vicp.eden.cache;

import java.util.*;

public class CachePool {
	private HashMap<Object, Object> pool;
	private LinkedList list;
	private int capacity;
	
	public CachePool(int size) {
		pool = new HashMap<Object, Object>();
		list = new LinkedList<Object>();
		this.capacity = size;
	}
	
	public synchronized Object get(Object key) {
		Object value = pool.get(key);
		if(value != null) {
			list.remove(key);
			list.addFirst(key);
		}
		return value;
	}
	
	public synchronized void put(Object key, Object value) {
		Object obj = null;
		if(pool.size() >= capacity) {
			obj = list.removeLast();
			pool.remove(obj);
		}
		obj = pool.get(key);
		if(! value.equals(obj)) {
			pool.remove(key);
		}
		pool.put(key, value);
		list.remove(key);
		list.addFirst(key);
	}
	
	public synchronized Object remove(Object key) {
		Object value = pool.get(key);
		list.remove(key);
		return value;
	}
	
	public synchronized void clear() {
		pool.clear();
		list.clear();
	}
}

你可能感兴趣的:(apache,算法,cache,J2SE)