【发布时间】:2014-03-17 20:07:32
【问题描述】:
在重新阅读 scala.lan.org 详细介绍 Future here 的页面时,我偶然发现了以下句子:
如果某些回调从未完成(例如回调包含无限循环),则其他回调可能根本不会执行。在这些情况下,潜在的阻塞回调必须使用阻塞构造(见下文)。
为什么其他回调不会被执行?我可能会为给定的 Future 安装一些回调。完成 Future 的线程可能会也可能不会执行回调。但是,因为一个回调没有玩脚踢,其余的不应该受到惩罚,我认为。
我能想到的一种可能性是 ExecutionContext 的配置方式。如果它配置有一个线程,那么可能会发生,但这是一种特定行为,通常不是预期的行为。
我在这里遗漏了一些明显的东西吗?
【问题讨论】:
-
“但这是一种特定的行为,通常不是预期的行为”:或者换句话说,这可能发生(回调永远不会执行)。这似乎与您引用的文字所说的完全一致。
-
@RégisJean-Gilles 同意你的解释。事实上,你的观点强调了我的推论,如果我在回调中管理可能永无止境的计算时不小心,我可能会对其他回调感到惊讶。我的观点是,关于未来的文章可以举例说明这种可能的后果;否则听起来有些模糊。你怎么看?我只是好奇别人的看法。