Web からいくつかの並行 LRU キャッシュの実装を取得しました。それらには HashMap と同期ブロックがあります。私が望むのは、 ConcurrentHashMap を使用し、(可能な場合) 同期ブロックの使用を避けることです。HashMap の代わりに ConcurrentHashMap を配置しましたが、すべてがうまくいきませんでした。スレッドは 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;
}
}