当我尝试scala列表时,我发现了一个问题。当我使用MutableList时,只想尝试在foreach中添加一个元素(我知道这是一个糟糕的操作):
import scala.collection.mutable.MutableList
val tts = MutableList("Hello World~")
tts.foreach { t =>
tts += "Hello World~"
println(t)
}
控制台输出:
Hello World~
Hello World~
我的问题是,为什么上面的代码不抛出一个ConcurrentModificationException
或输出正常?
发布于 2014-10-08 05:43:32
在迭代期间将ConcurrentModificationException
抛到修改上通常称为失败快速语义。Scala集合类通常不会抛出ConcurrentModificationException
,因为:
由于这个原因,Scala只记录了不允许并发修改的文档,而不是为快速失败而奋斗,最终导致了一个漏洞百出的抽象。
https://stackoverflow.com/questions/26249635
复制相似问题