웹에서 동시 LRU 캐시 구현을 수행했습니다. HashMap과 동기화 된 블록이 있습니다. 내가 원한 것은 ConcurrentHashMap을 사용하고 동기화 된 블록을 사용하여 (가능한 곳에) 피하는 것이다. HashMap 대신 ConcurrentHashMap을 넣었습니다. 모든 것이 잘못되었습니다. Thread는 map.get (key)에서 종료됩니다. 어쩌면 ConcurrentHashMap의 매개 변수를 어떻게 든 사용자 정의해야합니까?ConcurrentHashMap with complicated objects
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;
}
}
좀 더 구체적으로 기재 할 수 있습니까? 무엇이 잘못 되었습니까? –
관련 코드를 제공하지 않았습니다. 그것은 값 클래스의 정의가 아니며, 그것은지도의 사용입니다 – Asaf
ConcurrentHashMap의 사용하지 않고, 원래의 구현은 테스트 되었습니까? –