gpt4 book ai didi

java - 将 java.util.Collections.synchronizedList 与 Scala 的 .asScala 转换器一起使用

转载 作者:行者123 更新时间:2023-12-01 16:47:55 24 4
gpt4 key购买 nike

java.util.Collections.synchronizedList 的 JavaDoc 说明如下

It is imperative that the user manually synchronize on the returned list when iterating over it:

List list = Collections.synchronizedList(new ArrayList());
...
synchronized (list) {
Iterator i = list.iterator(); // Must be in synchronized block
while (i.hasNext())
foo(i.next());
}

Failure to follow this advice may result in non-deterministic behavior.

现在我想知道当我使用 scala.collection.JavaConverters 中的 .asScala 函数和 .map 时会发生什么。

转换器会在迭代期间负责同步吗?还是我仍然需要自己完成?

最佳答案

.asScala 函数返回一个 scala.collection.mutable.Buffer,它不执行任何同步操作。

scala> Collections.synchronizedList(new util.ArrayList[Int]())
res0: java.util.List[Int] = []

scala> res0.asScala
res1: scala.collection.mutable.Buffer[Int] = Buffer()

您的问题的答案是,您必须注意同步。

关于java - 将 java.util.Collections.synchronizedList 与 Scala 的 .asScala 转换器一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46400000/

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