gpt4 book ai didi

java - 在这个 scala 示例中同步是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 02:18:44 25 4
gpt4 key购买 nike

我是 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
}
}

我在这里想要实现的目标是确保在 updateMap 方法中的任何给定时间只有一个线程可以操作 requestMap 对象。我想知道上面的两个示例是否等效,在哪里可以找到 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com