Mein aktueller Code verwendet Reihe von asynchronen Prozessen, die in Ergebnissen enden. Ich muss jede davon so umhüllen, dass auf jede von einer synchronen Methode mit dem Ergebnis als Rückgabewert zugegriffen wird. Ich möchte die Executor-Dienste dazu nutzen, um viele von ihnen gleichzeitig zu ermöglichen. Ich habe das Gefühl, dass Future für meine Implementierung relevant sein könnte, aber ich kann keinen guten Weg finden, dies zu erreichen.Wickeln einer Reihe von asynchronen Aufrufen mit einer synchronen Methode mit einem Rückgabewert
Was ich habe jetzt:
public class DoAJob {
ResultObject result;
public void stepOne() {
// Passes self in for a callback
otherComponent.doStepOne(this);
}
// Called back by otherComponent once it has completed doStepOne
public void stepTwo(IntermediateData d) {
otherComponent.doStepTwo(this, d);
}
// Called back by otherComponent once it has completed doStepTwo
public void stepThree(ResultObject resultFromOtherComponent) {
result = resultFromOtherComponent;
//Done with process
}
}
Diese ziemlich gut intern gearbeitet hat, aber jetzt brauche ich, wie mein Prozess in eine synchrone Methode mit einem Rückgabewert zuzuordnen:
public ResultObject getResult(){
// ??? What goes here ???
}
Hat jemand Haben Sie eine gute Idee, wie Sie das elegant umsetzen können?
In dieser Spezifikation fehlt eine Sache: Wie wollen Sie das ResultObject der verschiedenen Aufgaben am Ende zu einem einzigen kombinieren? –
Ich bin mir nicht sicher, ob ich die Frage verstehe. Normalerweise wird der Prozess durch neue DoAJob.stepOne() gestartet; Die Methode stepTwo() wird durch einen Callback von otherComponent initiiert. Am Ende der Kette von Callbacks ist das ResultObject korrekt ausgefüllt. Irgendwelche Zwischendatenbits werden in das Endergebnis integriert. – irondwill