Вы ожидаете завершения работы внутри потока, но исполнитель не может завершить работу во время работы потока, поэтому это не произойдет. Поэтому переместите awaitTermination
за пределы функции map
.
Однако реальная проблема заключается в том, что вы создаете два ExecutorService
s и останавливаете неправильный. Если вы просто передадите созданный вами сервис, он будет завершен, как и ожидалось:
val customExecutor: ExecutorService =
Executors.newFixedThreadPool(10)
implicit val customExecutionContext: ExecutionContext =
ExecutionContext.fromExecutorService(customExecutor)
futureCall() map { result =>
customExecutor.shutdown()
}
customExecutor.awaitTermination(5, TimeUnit.SECONDS)