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

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

[b]这是缓存器核心类。[/b]
[code]
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();
}
}
[/code]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值