스레드 안전하고 효율적인 LRU
캐시 구현 코드가 필요합니다. 아래 코드 은 스레드로부터 안전하지 않습니다. 이 코드는 ConcurrentHashMap
을 사용하여 향상시킬 수 있습니까? 미리 감사드립니다. 동시 LRU 캐시 구현
private class LruCache<A, B> extends LinkedHashMap<A, B> {
private final int maxEntries;
public LruCache(final int maxEntries) {
super(maxEntries + 1, 1.0f, true);
this.maxEntries = maxEntries;
}
@Override
protected boolean removeEldestEntry(final Map.Entry<A, B> eldest) {
return super.size() > maxEntries;
}
}
는 구아바 캐시를 사용하는 것이 좋습니다 : http://google.github.io/guava/releases/19.0/api/docs/com/google/ common/cache/package-frame.html –
[ConcurrentLinkedHashMap] (https://github.com/ben-manes/concurrentlinkedhashmap/wiki/Design) beget [Guava의 캐시] (https://github.com/ben-manes/) concurrentlinkedhashmap/blob/wiki/ConcurrentCachingAtGoogle.pdf) [Caffeine] (http://highscalability.com/blog/2016/1/25/design-of-a-modern-cache.html)이됩니다. –
https://github.com/ben-manes/caffeine에 대한 링크가 실제로 훨씬 높아야합니다. 이것은 잘 문서화되고 잘 작성된 패키지입니다. – user2163960