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.