2016-06-02 22 views
1

Ich habe den folgenden Code:Haupt-Thread während des Laufens Klassen await noch nicht fertig

val f1: Future[Unit] = Future { 
    Thread sleep 5 
    println(1) 
    } 

    val f2: Future[Unit] = Future { 
    Thread sleep 10000 
    println(2) 
    } 

    def main(args: Array[String]): Unit = async { 
    await(f1) 
    await(f2) 
} 

würde ich der Haupt-Thread gerne beenden, nachdem der letzte await Verfahren beendet wurde.

Wie kann ich das tun?

Antwort

2

Nun, seit async/await produziert eine Future, müssen Sie auch darauf warten.

import scala.concurrent.Await 
import scala.concurrent.duration._ 

def main(args: Array[String]): Unit = { 
    val future = async { 
    await(f1) 
    await(f2) 
    } 
    Await.result(future, Duration.Inf) 
} 
+0

'Await.ready' wäre wahrscheinlich in diesem Fall besser. – TeWu

Verwandte Themen