执行上下文没有关闭
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)
我 运行 遇到了一个奇怪的问题,即执行上下文没有关闭 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)