Die ScalaDoc sagt dies über concurrentMap: "Veraltet (seit Version 2.10.0) Verwenden Sie stattdessen scala.collection.concurrent.Map
." Leider wurde die rest of the Scala docs nicht aktualisiert und verweist immer noch concurrentMap
.Best Practices für das Mischen in Scala Concurrent.Map
Ich habe versucht, in concurrent.Map
in eine HashMap
, mit den folgenden Ergebnissen zu mischen:
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]
So sehen wir, dass anstelle einer einfachen mixin, einige Methoden müssen auch umgesetzt werden. Ist dies der beste Weg, um concurrent.Map
zu verwenden, oder gibt es einen besseren Weg?
Scala 2.11 lehnt die synchronisierten Merkmale –
True, bearbeitet die Antwort. – axel22
scala.collection.mutable.ConcurrentMap wird auch zugunsten von scala.collection.concurrent.Map abgelehnt; diese Änderung macht den Rest der Lösung durcheinander –