小编iro*_*ill的帖子

使用带有返回值的同步方法包装一系列异步调用

我当前的代码使用一系列异步过程,最终达到结果.我需要以这样的方式包装每一个,每个都通过同步方法访问,结果作为返回值.我想使用执行程序服务来执行此操作,以便允许其中许多服务同时发生.我觉得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
  }
}
Run Code Online (Sandbox Code Playgroud)

这在内部工作得非常好,但现在我需要将我的进程映射到具有返回值的同步方法,如:

public ResultObject getResult(){
  // ??? What goes here ???
}
Run Code Online (Sandbox Code Playgroud)

有没有人对如何优雅地实现它有一个好主意?

java concurrency asynchronous synchronous

9
推荐指数
2
解决办法
5594
查看次数

标签 统计

asynchronous ×1

concurrency ×1

java ×1

synchronous ×1