W dokumencie ScalaDoc jest napisane o współbieżności mapy: "Przestarzałe (od wersji 2.10.0) Zamiast tego użyj scala.collection.concurrent.Map
". Niestety, wersja rest of the Scala docs nie została zaktualizowana i nadal nosi numer concurrentMap
.Najlepsze praktyki dotyczące mieszania Scala w trybie równoczesnym.Mapa
próbowałem mieszać w concurrent.Map
w HashMap
, z następującymi wynikami:
scala> val mmap = new mutable.HashMap[String, String] with collection.concurrent.Map[String, String]
<console>:16: error: object creation impossible, since:
it has 4 unimplemented members.
/** As seen from anonymous class $anon, the missing signatures are as follows.
* For convenience, these are usable as stub implementations.
*/
def putIfAbsent(k: String,v: String): Option[String] = ???
def remove(k: String,v: String): Boolean = ???
def replace(k: String,v: String): Option[String] = ???
def replace(k: String,oldvalue: String,newvalue: String): Boolean = ???
val mmap = new mutable.HashMap[String, String] with collection.concurrent.Map[String, String]
Widzimy więc, że zamiast prostego wstawek, niektóre metody muszą być wdrożone. Czy jest to najlepszy sposób użycia concurrent.Map
, czy jest lepszy sposób?
Scala 2.11 odbiera zsynchronizowane cechy. –
Prawda, edytował odpowiedź. – axel22
scala.collection.mutable.ConcurrentMap jest również przestarzałe na rzecz scala.collection.concurrent.Map; wprowadzając tę zmianę w resztę rozwiązania –