Given this code:
object Test {
import scala.concurrent.ExecutionContext.Implicits.global
def main(args: Array[String]): Unit = {
val f: Future[String] = Future { "Test" }
f.onComplete {
case Success(name) => println(name)
case Failure(t) => t.printStackTrace()
}
}
}
I see no output, however changing println to System.out.println works:
object Test {
import scala.concurrent.ExecutionContext.Implicits.global
def main(args: Array[String]): Unit = {
val f: Future[String] = Future { "Test" }
f.onComplete {
case Success(name) => System.out.println(name)
case Failure(t) => t.printStackTrace()
}
}
}
Also using println with a standard Thread also works:
object Test {
def main(args: Array[String]): Unit = {
val t = new Thread() {
override def run(): Unit = println("Test")
}
t.start()
t.join()
}
}
Why is this?