执行上下文没有关闭

Execution Context not getting shutdown

我 运行 遇到了一个奇怪的问题,即执行上下文没有关闭 down.I 尝试使用或不使用 await。


  import scala.concurrent.ExecutionContext

  val customExecutor: ExecutorService =
    Executors.newFixedThreadPool(serviceConfig.serviceConf.numberOfThreads)
  implicit val customExecutionContext: ExecutionContext =
    ExecutionContext.fromExecutorService(
      Executors.newFixedThreadPool(10)
    )

    futureCall() map { result =>
      import java.util.concurrent.TimeUnit

      customExecutor.shutdown()

      customExecutor.awaitTermination(60, TimeUnit.SECONDS)  
    } 


您正在等待线程内的关闭,但执行程序无法在线程处于 运行 时关闭,因此不会发生这种情况。因此,将 awaitTermination 移到 map 函数之外。

然而,真正的问题是您创建了两个 ExecutorService 并停止了错误的。如果您只是传递您创建的服务,它会按预期终止:

val customExecutor: ExecutorService =
  Executors.newFixedThreadPool(10)

implicit val customExecutionContext: ExecutionContext =
  ExecutionContext.fromExecutorService(customExecutor)

futureCall() map { result =>
  customExecutor.shutdown()
} 

customExecutor.awaitTermination(5, TimeUnit.SECONDS)