我从网上获取了一些并发 LRU 缓存实现,它们有 HashMap 和同步块。我想要的是使用 ConcurrentHashMap 并避免(在可能的情况下)使用同步块。我放了 ConcurrentHashMap 而不是 HashMap 并且一切都出错了。线程在 map.get(key) 上退出。也许我的 ConcurrentHashMap 参数需要以某种方式定制?
private ConcurrentHashMap<Object, LRUListEntry> map;
protected class LRUListEntry extends Object
{
LRUListEntry next;
LRUListEntry prev;
Object value;
Object key;
int hits;
final int penalty = -1;
public String toString()
{
return key + "=" + value;
}
public Object getKey()
{
return key;
}
public Object getValue()
{
return value;
}
}