Java 处理两种不同类型的期货的理想方式是什么,其中一种期货依赖于另一种期货?

Java 处理两种不同类型的期货的理想方式是什么,其中一种期货依赖于另一种期货?,java,akka,future,Java,Akka,Future,我在看AKKA的Java Futures API,我看到了很多处理同一类型多个期货的方法,但我没有看到任何处理不同类型期货的方法。我猜我把事情弄得更复杂了 无论如何,让我们假设我们有两个不同的演员:actorA和actorB。它们基于不同的阶级,各自返回不同的未来。然而,actorB取决于actorA的未来。以下是逻辑,如何最好地处理这个案件 Future<A> a = actorA.sendRequestReplyFuture(...); Future<B> b =

我在看AKKA的Java Futures API,我看到了很多处理同一类型多个期货的方法,但我没有看到任何处理不同类型期货的方法。我猜我把事情弄得更复杂了

无论如何,让我们假设我们有两个不同的演员:actorA和actorB。它们基于不同的阶级,各自返回不同的未来。然而,actorB取决于actorA的未来。以下是逻辑,如何最好地处理这个案件

Future<A> a = actorA.sendRequestReplyFuture(...);

Future<B> b = actorB.sendRequestReplyFuture(a);
Future a=actorA.sendRequestReplyFuture(…);
未来b=actorB.sendRequestReplyFuture(a);

如果我们有一个actorAs和actorBs的列表,怎么样?

为什么不像你所做的那样把它们包装起来,只做一点小小的改变——将a的结果传递给b

Future a = actorA.sendRequestReplyFuture(...);

Future b = actorB.sendRequestReplyFuture(a.get());

这种安排只意味着在
actorA.sendRequestReplyFuture()
完成之前不会调用
actorA.sendRequestReplyFuture()。这没什么问题,事实上,我喜欢你的模式。

刚刚从内存中编写的警告可能无法编译OOTB:

Future<B> b = actor.sendRequestReplyFuture().flatMap( new akka.japi.Function<A,Future<B>>() {
  public Future<B> apply(A a) {
     return actor.sendRequestReplyFuture(a);
  }
}
Future b=actor.sendRequestReplyFuture().flatMap(新的akka.japi.Function(){
公共期货申请(A){
返回actor.sendRequestReplyFuture(a);
}
}

hmmm问题:从非阻塞的角度来看,这是否与使用as flatMap调用一样有效?在Java中很容易变得笨拙,但是,是的,我们的Java API在未来也有一个flatMap。