現在のコードでは、結果が最高レベルになる一連の非同期プロセスが使用されています。私は、それぞれが結果を戻り値として持つ同期メソッドによってアクセスされるように、これらのそれぞれをラップする必要があります。私はこれを実行するためにエグゼクティブサービスを使用して、これらの多くが同時に発生するようにします。私は、未来が私の実装に関係するかもしれないという気持ちがありますが、これを実現させる良い方法を理解することはできません。これは、内部的にかなりうまく働いたが、今のような戻り値に同期する方法に私のプロセスをマッピングする必要があり戻り値のある同期メソッドで一連の非同期呼び出しをラップする
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
}
}
:
public ResultObject getResult(){
// ??? What goes here ???
}
は、誰にも何私が今持っている
これをエレガントに実装する方法については良いアイデアがありますか?
この仕様には欠点が1つあります。最終的に、異なるタスクのResultObjectをどのように組み合わせて単一のものにする予定ですか? –
私はその質問を理解しているか分からない。通常、プロセスは新しいDoAJob.stepOne()によって開始されます。 stepTwo()メソッドは、otherComponentからのコールバックによって開始されます。コールバックのチェーンの終わりに、ResultObjectが正しく挿入されます。中間データビットはすべて最終結果に統合されます。 – irondwill