何もそれの結果を待つとしていないので、それは実際にも、ドロップ を再生するのでしょうか? 、未来はまったく実行されることを保証んHTTPリクエストが待たれていた未来の未来は、 をバックグラウンドで実行していますか?
この質問は実際にプレイよりもはるかに深い実行されます。 「私が未来を同期的に待たなければ、GCedなしで実際に完了することをどうすれば保証できますか?」これに答えるには、GCがスレッドを実際にどのように表示するかを理解する必要があります。 GCの観点から、スレッドは「ルート」と呼ばれています。そのようなルートは、ヒープがそのオブジェクトを横断してどのオブジェクトがコレクションに適格であるかを見るための開始点です。根の中には、例えばアプリケーションの生存期間を通じて生存することが知られている静的なフィールドもあります。
だから、あなたがそのようにそれを表示したとき、およびFuture
は、実際に我々がExecutionContext
と呼ぶ基礎となるExecutorService
(経由で利用可能なスレッドのプールから専用スレッド上で動作する機能をキューイングしている、何をするかを考えますScalaで)、完了を待っていなくても、JVMランタイムはFuture
が完了するまで実行することを保証します。ファンクションをラップするオブジェクトFuture
については、未完了のファンクションボディへの参照を保持するので、Future
自体は収集されません。あなたはその観点から考えると
、Future
の実行は非同期で起こるので、それは、完全に論理的だし、我々は通常、など
継続など
map
、
flatMap
、
onComplete
を使用して、非同期にそれを処理し続けます