import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future
def now() = new java.util.Date();
(1 to 30).foreach(_ => Future{Thread.sleep(2000);println(now)})
我正在使用 scala 進行異步處理,但未顯示。在這種情況下如何顯示它?請不要 Thread.sleep。
uj5u.com熱心網友回復:
請不要 Thread.sleep。
在程式末尾沒有任何Thread.sleep內容,您的代碼將在終止后foreach結束,并且掛起的異步任務將被終止。因此很可能不會列印任何內容,因為迭代 30 個專案不需要 2 秒。
話雖如此,您可以明確地等待異步任務。類似于以下內容:
val tasks: Seq[Future[Unit]] = (1 to 30)
.map(_ => Future {
Thread.sleep(2000)
println(now)
})
val tasksMerged = Future.sequence(tasks)
Await.result(tasksMerged, 3.seconds)
Await將等待傳入引數的異步任務完成,直到引數中給出的超時。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/515718.html
標籤:斯卡拉并发
上一篇:如何在Python中創建具有特殊條件的日期和年份串列?
下一篇:在EPOCH中將日期轉換為時間戳
