Concurrency and Source Panels
Thread Result Slots
Store values produced by two threads in separate result slots.
Thread Result Slots
ThreadResultSlots.scala
object Main {
var left = 0
var right = 0
def leftWork(seed: Int): Unit = {
left = seed + 4
}
def rightWork(seed: Int): Unit = {
right = seed * 3
}
def main(args: Array[String]): Unit = {
val seed =
val first = Thread(() => leftWork(seed))
val second = Thread(() => rightWork(seed))
first.start()
second.start()
first.join()
second.join()
val total = left + right
println("left=" + left)
println("right=" + right)
println("total=" + total)
}
}
object Main {
var left = 0
var right = 0
def leftWork(seed: Int): Unit = {
left = seed + 4
}
def rightWork(seed: Int): Unit = {
right = seed * 3
}
def main(args: Array[String]): Unit = {
val seed =
val first = Thread(() => leftWork(seed))
val second = Thread(() => rightWork(seed))
first.start()
second.start()
first.join()
second.join()
val total = left + right
println("left=" + left)
println("right=" + right)
println("total=" + total)
}
}
object Main {
var left = 0
var right = 0
def leftWork(seed: Int): Unit = {
left = seed + 4
}
def rightWork(seed: Int): Unit = {
right = seed * 3
}
def main(args: Array[String]): Unit = {
val seed =
val first = Thread(() => leftWork(seed))
val second = Thread(() => rightWork(seed))
first.start()
second.start()
first.join()
second.join()
val total = left + right
println("left=" + left)
println("right=" + right)
println("total=" + total)
}
}
thread-result
Two threads can update independent fields, then the main thread joins them and reads the final scalar results.