Scala - Mutable thread safe collections
Fast hint for those coming to this in 2018 or later:
import java.util.concurrent.ConcurrentHashMapval m: ConcurrentHashMap[String,MyClass] = new ConcurrentHashMap
- You're duplicating topics....
As was mentioned by AlexIv in his answer, there's a trait you can mix in if you want thread safety. There's another way though:
val synchronizedMap = new scala.collection.mutable.LinkedHashMap[String, Any]() with scala.collection.mutable.SynchronizedMap[String, Any]
That should give you the map with synchronization on each access. Easy, but might not meet the performance requirements. If so, it would be probably easier to create a custom class extending the LinkedHashMap
, mixing in the concurrent.Map
trait (as was suggested) and provide the implementation of relevant methods, i.e: putIfAbsent
, remove
replace
(2 overloads).