2013-04-11 12 views
6

Angenommen, ich muss einige parallele Aufgaben in Scala ausführen. Jede Aufgabe führt einen blockierenden Anruf aus (z. B. Process.waitFor). Jetzt möchte ich warten, bis eine der Aufgaben abgeschlossen ist.Warten auf einen bestimmten Futures in Scala?

Wie ich verstehe, sollte ich Scala Future verwenden, um die Aufgabe zu wickeln. Gibt es eine API in Scala, um zu warten, bis einer der angegebenen Futures beendet?

Antwort

13

Es ist build-in-Methode, dies zu tun:

Future.firstCompletedOf(yourFutures) 

from the doc:

Gibt eine Zukunft auf das Ergebnis der ersten Zukunft in der Liste, die abgeschlossen ist.

Beachten Sie, dass dies nicht alle anderen Futures zu unterbrechen, so dass Sie sie selbst stornieren müssen, wenn Sie müssen.