2011-11-18 1 views
1

으로 나는 이전의 질문에 다시 도달하고있어 내가했다 : 그러나 Frequently Used metadata Hashmap자주 해시지도를 사용하지만, 동시성

, 나는 인 ConcurrentMap 작동하도록 해당 솔루션을 적용 할 방법이 시간에? LinkedHashMap은 동기화 된 콜렉션이 아니며 성능상의 이유로 인해 sycronizedMap에 랩핑하고 싶지 않습니다. 이 문제를 해결하기위한 또 다른 대안이 있습니까?

원래 문제는 너무 많은 항목 후에 가장 많이 사용되지 않는 항목을 제거하는 해시 맵이 필요하다는 것이 었습니다.

+3

synchronizedMap에서 랩핑하면 실제로 성능 문제가 발생합니까? 아니면 '조기 최적화'의 경우입니까? – Bringer128

+1

체크 아웃 할 수 있습니다 : http://code.google.com/p/concurrentlinkedhashmap/wiki/Design – Deco

+0

왜 java.util.concurrent에서'ConcurrentHashMap'을 사용하지 않습니까? – pushy

답변

1

구아바 MapMakerCacheBuilder 클래스는 LRU 축출 정책이있는 동시 맵을 생성 할 수 있습니다.

CacheBuilder 클래스는 Guava 개발자가 MapMaker에서 캐시 지원 방법을 제거하는 프로세스에서 사용 사례를 캐싱하는 데 적합합니다.

+2

[CacheBuilder] (http://guava-libraries.googlecode.com/svn/trunk/javadoc/com /google/common/cache/CacheBuilder.html)는 Google의 MapMaker를 대체하며 선호해야합니다. –

+0

이 대답은 CacheBuilder로 연결되기 때문에 받아 들일 것입니다. – monksy