IO 的“最佳”ExecutionContext

"Best" ExecutionContext for IO

提问人:vicaba 提问时间:6/24/2016 更新时间:6/24/2016 访问量:867

问:

我的 Scala 代码中有一些同步调用。我已将它们包装在 blocking() 上下文中,然后将它们包装在 Future: Future(blocking(syncCall())) 中,但我不知道使用哪种类型的 ExecutionContext。

我知道可能有很多可能性,并且没有一个 ExecutionContext 是“最好的”。我只是需要一些信息,以免选择最坏的情况,因为那里有很多信息,我脑子里一团糟。

Scala IO 阻塞 执行上下文

评论

2赞 Yuval Itzchakov 6/24/2016
如果你在 .为什么不呢?blockingFutureFuture(syncCall())
3赞 vicaba 6/24/2016
@YuvalItzchakov要通知 ExecutionContext 这是一个阻塞调用,请阅读 github.com/alexandru/scala-best-practices/blob/master/sections/...
0赞 Yuval Itzchakov 6/24/2016
好读,谢谢。在该部分(4.6)之后说: 与规则 4.4 相关,如果您要执行大量阻塞 I/O(例如对 JDBC 的大量调用),最好创建第二个线程池/执行上下文并对其执行所有阻塞调用,让应用程序的线程池处理 CPU 密集型内容。为什么不使用这个建议呢?
0赞 vicaba 6/24/2016
@YuvalItzchakov这就是我的意图,这就是为什么我寻求一些帮助,因为我不知道该使用哪个线程池。此外,第4.6条不会使第4.4条规则无效
1赞 Haspemulator 6/24/2016
Scala 本身不做任何线程调度,而是将工作传递给底层 .因此,您的问题可以归结为以下几点:应该将哪种类型的 IO 任务用于 IO。ExecutionContextjava.util.concurrent.ExecutorServiceExecutorService

答: 暂无答案