0
在这个例子中,我有一个竞争条件,在节目结束的字符串s
应该@
和#
打印代替:测序期货,以避免竞争条件
object TestFutures extends App {
var s = "THIS IS A STRING"
val f0 = Future { 0 }
val f1 = Future { 1 }
val fx = Seq(f0,f1)
fx.map {
seq => seq.map { i =>
println("BEFORE ---> " + s)
if (i == 0)
s = s.replace ("T", "@")
else
s = s.replace ("I", "#")
println("AFTER ---> " + s)
}
}
Thread.sleep(5000)
}
但代码打印
BEFORE ---> THIS IS A STRING
BEFORE ---> THIS IS A STRING
AFTER ---> TH#S #S A STR#NG
AFTER ---> TH#S #S A STR#NG
如何避免这种竞争条件?如何更改字符串?