title: Best practices for mixing in Scala concurrent.Map
body: <p>The <a href="http://www.scala-lang.org/api/current/index.html#scala.collection.mutable.ConcurrentMap" rel="noreferrer">ScalaDoc</a> says this about concurrentMap: "Deprecated (Since version 2.10.0) Use <code>scala.collection.concurrent.Map</code> instead." Unfortunately, the <a href="http://docs.scala-lang.org/overviews/collections/concrete-mutable-collection-classes.html#concurrent_maps" rel="noreferrer">rest of the Scala docs</a> has not been updated and still references <code>concurrentMap</code>.</p>
  
  <p>I tried to mix in <code>concurrent.Map</code> into a <code>HashMap</code>, with the following results:</p>
  
  <pre><code>scala&gt; val mmap = new mutable.HashMap[String, String] with collection.concurrent.Map[String, String]
  &lt;console&gt;: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]
  </code></pre>
  
  <p>So we see that instead of a simple mixin, some methods must also be implemented. Is this the best way to use <code>concurrent.Map</code>, or is there a better way?</p>