잠재적으로 멀티 스레드 환경을 가정합니다. 나는 (가치) 캐싱과 함께지도를 사용하고 싶다. 왜 내가 더 선호 하나?collection.immutable.Map [K, SoftReference [V]] over Google의 MapMaker?
collection.immutable.Map.empty[ K, SoftReference[ V ]]
new com.google.common.collect.MapMaker.softValues.makeMap[ K, V ]
맵은 STM ref에 저장 될 것이므로 불변 (immutable)은 곧장 앞으로 나아질 것입니다. 또한 K
은 Long
일 가능성이 높으므로 collection.immutable.LongMap
을 사용할 수 있습니다.
여기에 Google 모음을 사용하면 어떤 이점이 있습니까? 성능과 공간이 현명합니까?
이 글을 다시 읽으면 분명히 옵션이 아닙니다. "지도는 STM 심판에 저장 될 것이므로 불변은 곧장 앞으로 나아질 것입니다." - 괜찮지는 않지만 실제로 ** 필수 **이며,'MapMaker'는 변경할 수있는 java.util.concurrent.ConcurrentMap을 반환하므로 여기서 작동하지 않습니다. 나는'com.google.common.collect.ImmutableMap'과 같은 불변의 맵을 가질 수 있다고 생각하면서 속 였지만'MapMaper'는 그것을 지원하지 않는 것 같습니다. –