我是scala的新手,我正试图习惯这种语言。我正在寻找一种等效于以下Java同步技术的方法。
private final Map<String, Future<Boolean>> requestMap = new HashMap<>();
public void updateMap(String key) {
synchronized(requestMap) {
// update contents of requestMap
}
}
我认为下面的语法与上面的Java的Scala等价。
private val requestMap = new mutable.LinkedHashMap[String, Future[Boolean]]
def updateMap(key: String): Unit = {
requestMap.synchronized {
// update contents of requestMap
}
}
我要在此处实现的目标是确保在任何给定时间在
requestMap
方法中只有一个线程可以操纵updateMap
对象。我想知道上述两个示例是否等效,并且在哪里可以找到记录在案的synchronized
Scala用法? 最佳答案
没错,这些是等效的:
//Java
synchronized(foo) { statements ... }
//Scala
foo.synchronized { statements ... }
在scala中,
synchronized
是一个库结构(尽管是合成的)-即,它是a method on AnyRef
关于java - 在此scala示例中,同步如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47512842/