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:
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?
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:
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:
Tags und Links java api concurrency future