我有 Scala 的代码
class MyClass {
private val myData: Map[String, MyClass2] = new HashMap[String, MyClass2]()
def someMethod = {
synchronized(myData) {
val id = getSomeId
if (myData.containsKey(id)) myData = myData.remove(id)
else Log.d("123", "Not found!")
}
}
def getSomeId = //....
}
我想知道,是否可以在不使用synchronized
或不涉及其他库(例如Java 或 Scala 中内置的Akka
任何其他库(类))的情况下保持此代码的线程安全?
理想情况下,我只想通过使用不变性的概念来使线程安全(final
如果你愿意的话,在 Java 中)。
更新:
class MyClass(myData: Map[String, MyClass2] = new HashMap[String, MyClass2]()) {
def someMethod = {
synchronized(myData) {
val id = getSomeId
if (myData.containsKey(id)) new MyClass(myData.remove(id))
else {
Log.d("123", "Not found!")
this
}
}
}
def getSomeId = //....
}