Scala期货和线程

时间:2015-03-11 15:06:37

标签: scala concurrency

阅读scala.concurrent.Future和scala.concurrent.impl.Future的scala源代码,似乎通过map的每个未来组合都会为执行程序调度一个新任务。我假设这通常会触发当前线程的上下文切换,和/或为作业分配线程。

考虑到功能流需要通过它们之间的期货来对期货的结果采取行动而不会阻塞(或者没有深入研究回调意大利面),这不是“反应性的”#34;范式在实践中非常昂贵,当代码以模块化方式编写时,每个函数只执行一些小的操作并传递给其他函数?

1 个答案:

答案 0 :(得分:2)

这取决于执行上下文。所以你可以选择策略。

你的执行者也可以在调用线程中执行它,将map调用保持在同一个线程上。您可以通过显式传递执行上下文或使用隐式。

来传递您自己的策略

我首先通过记录使用的线程来测试默认的fork / join池的功能。 Afaik的新版本有时会使用提交线程。但是,我不知道是否使用/应用了scala未来的回调。