import java.util.concurrent.Executors
import scala.concurrent._
import scala.util.{Failure, Success}
import scala.concurrent.duration.DurationInt
import scala.language.postfixOps
object Test extends App {
println("start")
implicit val ec: ExecutionContextExecutorService = ExecutionContext.fromExecutorService(Executors.newFixedThreadPool(10))
val future: Future[Unit] = Future {
println(s"future")
Thread.sleep(1000)
}
future.onComplete({
case Success(x) => println("Success")
case Failure(x) => println("Failure")
})
Await.result(future, 10 seconds)
println("finish")
}
and the ouput is:
start
future
finish
Success
... but the program never ends
This is happening because I am using other Execution Context implementation, when I use scala.concurrent.ExecutionContext.Implicits.global
everything is fine.
What am I missing?