Wartet auf Callback für mehrere Futures

8

Vor kurzem habe ich ein wenig Arbeit mit einer API untersucht. Die API verwendet die Unirest http-Bibliothek, um die Arbeit des Empfangens aus dem Web zu vereinfachen. Da die Daten vom API-Server aufgerufen werden, habe ich natürlich versucht, durch asynchrone Aufrufe der API effizient zu sein. Meine Idee ist wie folgt strukturiert:

  1. Erstellen Sie ein Datenfeld, indem Sie die Ergebnisse von Futures zurückgeben
  2. Anzeige von Daten und zusätzlichen Informationen aus den Daten

Daher muss ich alle Daten zurückgeben, bevor ich den zweiten Schritt starten kann. Mein Code ist wie folgt:

%Vor%

Wie würde ich es so machen, dass doStuff nur aufgerufen wird, nachdem beide Futures beendet sind?

    
John Mace 10.12.2013, 18:25
quelle

1 Antwort

8

Es gibt ein paar Optionen. Der Code, den Sie jetzt haben, ruft doStuff von dem Thread auf, in dem Sie Ihre Anfragen gestellt haben. Wenn Sie blockieren möchten, bis beide Anforderungen abgeschlossen sind, können Sie einen CountDownLatch verwenden. Etwas wie:

%Vor%

Wenn Sie diesen Thread nicht blockieren möchten, bis beide Aufrufe abgeschlossen sind, können Sie jede Ihrer anonymen inneren Callback-Klassen einen AtomicInteger inkrementieren. Wenn die Anzahl 2 ist, würden Sie doStuff aufrufen. Etwas wie:

%Vor%     
Oliver Dain 10.12.2013, 19:07
quelle

Tags und Links