現在のコードでは、最終的に結果が得られる一連の非同期プロセスを使用しています。結果を戻り値とする同期メソッドによってそれぞれがアクセスされるように、これらのそれぞれをラップする必要があります。これらの多くを同時に実行できるように、エグゼキュータ サービスを使用してこれを実行したいと考えています。Future が私の実装に関連している可能性があると感じていますが、これを実現するための良い方法がわかりません。
私が今持っているもの:
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 ???
}
これをエレガントに実装する方法について誰かが良い考えを持っていますか?