2014-07-13 3 views
1

키가 약한 스칼라에 Map 동시 또는 스레드 안전 Map을 얻으려면 어떻게해야합니까? 예를 들어 collection.mutable.WeakHashMap이지만 동시 액세스/업데이트를 지원하지 않는 것 같습니다. 싼 해결책은 일반적인 Java 동기화 된 잠금 뒤에 숨기는 것입니다.스레드 안전 취약 키 해시도

답변

2

구아바의 MapMaker을 사용하십시오.

import java.util.concurrent.ConcurrentMap 

val timers: ConcurrentMap[Request, Stopwatch] = 
    new MapMaker().concurrencyLevel(4).weakKeys.makeMap 

이것은 물론, 자바지도,하지만 당신은 쉽게 스칼라지도로 포장 할 수있다 :

import java.{util => ju} 
import scala.collection.JavaConverters._ 
import scala.collection.mutable 

val javaMap: ju.Map[String,String] = ... 
val scalaMap: mutable.Map[String,String] = javaMap.asScala 

해당 문서의 예는 (번역 스칼라에) 필요한 것을 정확히 보여줍니다

+0

괜찮 았지만 전체 타사 라이브러리에서 드로잉하는 것보다 무거운 것이 있습니까? –

+0

@ 0__ _concurrent_ (동기화되지 않은 상태)와 약한 키가있는 맵을 원한다면 표준 라이브러리에 그런 구현이 존재하지 않는다고 생각합니다. – ghik