Concurrency and Source Panels
Future Task Result
Run a Callable through FutureTask and read the result after joining its thread.
Future Task Result
FutureTaskResult.kt
import java.util.concurrent.Callable
import java.util.concurrent.FutureTask
fun scoreBatch(seed: Int): Int {
val base = seed + 4
val bonus = base / 2
return base + bonus
}
fun main() {
val seed =
val task = FutureTask(Callable { scoreBatch(seed) })
val worker = Thread(task)
worker.start()
worker.join()
val score = task.get()
println("seed=$seed")
println("score=$score")
}
import java.util.concurrent.Callable
import java.util.concurrent.FutureTask
fun scoreBatch(seed: Int): Int {
val base = seed + 4
val bonus = base / 2
return base + bonus
}
fun main() {
val seed =
val task = FutureTask(Callable { scoreBatch(seed) })
val worker = Thread(task)
worker.start()
worker.join()
val score = task.get()
println("seed=$seed")
println("score=$score")
}
import java.util.concurrent.Callable
import java.util.concurrent.FutureTask
fun scoreBatch(seed: Int): Int {
val base = seed + 4
val bonus = base / 2
return base + bonus
}
fun main() {
val seed =
val task = FutureTask(Callable { scoreBatch(seed) })
val worker = Thread(task)
worker.start()
worker.join()
val score = task.get()
println("seed=$seed")
println("score=$score")
}
future task
`FutureTask` wraps a callable result so another thread can compute it and the main thread can retrieve the value later.