Run a callable on a thread and read its result through a FutureTask.

Future Task Result

FutureTaskResult.scala
import java.util.concurrent.Callable
import java.util.concurrent.FutureTask

class ScoreJob(base: Int) extends Callable[Int] {
  def call(): Int = {
    base + 10
  }
}

object Main {
  def main(args: Array[String]): Unit = {
    val base = 

    val job = new ScoreJob(base)
    val task = new FutureTask[Int](job)
    val worker = Thread(task)
    worker.start()

    val score = task.get()
    println("base=" + base)
    println("score=" + score)
  }
}
import java.util.concurrent.Callable
import java.util.concurrent.FutureTask

class ScoreJob(base: Int) extends Callable[Int] {
  def call(): Int = {
    base + 10
  }
}

object Main {
  def main(args: Array[String]): Unit = {
    val base = 

    val job = new ScoreJob(base)
    val task = new FutureTask[Int](job)
    val worker = Thread(task)
    worker.start()

    val score = task.get()
    println("base=" + base)
    println("score=" + score)
  }
}
import java.util.concurrent.Callable
import java.util.concurrent.FutureTask

class ScoreJob(base: Int) extends Callable[Int] {
  def call(): Int = {
    base + 10
  }
}

object Main {
  def main(args: Array[String]): Unit = {
    val base = 

    val job = new ScoreJob(base)
    val task = new FutureTask[Int](job)
    val worker = Thread(task)
    worker.start()

    val score = task.get()
    println("base=" + base)
    println("score=" + score)
  }
}
future-task `FutureTask` stores the result produced by a worker thread so the main thread can read it after the task finishes.