2
所以我有一些端點服務器代碼,在那裏我想異步運行的東西。爲此我使用期貨。有跡象表明,導致結果的任務,但也有不昂貴的IO任務,所以我在火災執行它們,忘記未來,像這樣:那斯卡拉測試用火和忘記期貨
import scala.concurrent.Future
val ec = scala.concurrent.ExecutionContext.global
Future {
Thread.sleep(10000)
println("Done")
}(ec)
println("Exiting now")
輸出是:
import scala.concurrent.Future
ec: scala.concurrent.ExecutionContextExecutor = [email protected]
res0: scala.concurrent.Future[Unit] = [email protected]
Exiting now
res1: Unit =()
通常在服務器上這並不是什麼大問題,因爲上下文在接收其他任務時保持運行,所以IO可以完成。但是當我測試時,測試結束並且裏面的任務開始投擲,因爲他們使用的服務變得不可用。
所以問題是:我該如何等待這些大火併忘記未來,同時又阻止我的主要執行?
你一定要阻止主執行。 – Nyavro
你也可以粘貼測試代碼。 – curious
@Nyavro我真的不想那麼做。錯誤記錄在服務器上,並且不需要傳播到客戶端。如果我等待IO,我們正在討論將響應時間增加3-5秒。 – mirosval