原始问题
在什么情况下我们应该避免Future从类方法中返回 a ?未来化方法的成本是多少?
如果其他方法返回Future,如果这些方法仅执行琐碎的计算以保持接口一致性,我们是否仍然应该对方法进行未来化呢?
我想知道未来化方法的开销是多少(如果有的话)?
编辑-1
Future在 Java 运行时上下文中,将方法包装到 Scala(如果有)中的成本/开销是多少?
我猜它至少会产生更多的GC垃圾,但我不确定。
没有必要“未来化”任何东西,除非该方法有异步工作要做,即必须等待未来。如果该方法花费太多时间,调用者始终可以将调用包装到Future. 因此,我的结论是,除非您真正需要它,否则不要Future在您的 API 中使用它。
几乎不存在您可能需要Future结果但由于开销而应该避免它的情况。
简而言之 - 有一个ExecutionContext并且它负责所有开销。它收到一些小的关闭并按照自己喜欢的方式运行它们。存在的此类闭包越多,它应该处理的就越多。
每一个行动都会创造新的东西Promise,并呈现Future给你。every表示每个、、map等等。每个都只是做类似的操作,或者不创建新的,而是在.flatMapfilterforEachonCompletePromiseExecutionContext
所有这些都不是特别重,但是如果您的每个方法都会返回 a ,Future那么这可能是一个问题。
因此,只需遵循合理的极简主义,但如果您需要一些流计算,通常可以使每个步骤异步。