Here is example code scala 2.13.3:
import scala.concurrent.{ExecutionContext}
val scheduller: ScheduledExecutorService = Executors.newSingleThreadScheduledExecutor()
val promise = Promise[A]()
scheduller.schedule(
new Runnable {
override def run(): Unit = {
promise.failure(new TimeoutException)
scheduller.shutdown()
}
},
500,
TimeUnit.MILLISECONDS
)
Future.firstCompletedOf(Seq(INF_FUTURE, promise.future))
the time out will work if INF_FUTURE = Future.never but execution will not stops if INF_FUTURE = Future {while (true) {}}
Can you explane what is going on here?