Slide 32
Slide 32 text
var x: Int = 0; var y: Int = 0; var a: Int = 0; var b: Int = 0
def threadTest(testNo: Int) = {
val startLatch = new CountDownLatch(1)
x = 0; y = 0; a = 0; b = 0
val ta = new Thread({ () =>
startLatch.await()
a = 1
x = b
})
val tb = new Thread({ () =>
startLatch.await()
b = 1
y = a
})
ta.start(); tb.start()
startLatch.countDown()
ta.join(); tb.join()
if (x == 0 && y == 0) { //
思い込みに反して (x, y) = (0, 0)
が存在する
println(s"t = $testNo, x = $x, y = $y")
}
} 32