gpt4 book ai didi

java - ListenableFuture - 收到集群中的消息并执行耗时代码后完成

转载 作者:行者123 更新时间:2023-12-02 12:13:06 26 4
gpt4 key购买 nike

首先我只想说我是 akka 和 Futures 的新手。所以要温柔:)。

我在某个类中有 init 方法,它返回 ListenableFuture<Boolean> 。这个方法应该在单独的线程中执行一些耗时的代码,并创建 akka actor 来监听 akka 集群中的一些消息。 init 方法返回的 Future 应该在该 actor 收到特定消息并且耗时的代码完成后完成。

如何使用 Guava 的 ListenableFuture 实现此目的?

最佳答案

请参阅有关 future 的 Akka 文档:http://doc.akka.io/docs/akka/current/java/futures.html

您可以创建 2 个不同的 future,其中一个执行耗时的代码:

Future<String> f1 = future(new Callable<String>() {
public String call() {
return "Hello" + "World";
}
}, system.dispatcher());

还有一个向 Actor 发送一 strip 有询问的消息:

Timeout timeout = new Timeout(Duration.create(5, "seconds"));
Future<Object> f2 = Patterns.ask(actor, msg, timeout);

最后,您可以使用 Future.sequence 创建一个单独的 future,当您的两个 future 都完成时,该 future 也会完成。

Iterable<Future<Integer>> listOfFutureInts = source;
Future<Iterable<Integer>> futureListOfInts = sequence(listOfFutureInts, ec);

关于java - ListenableFuture - 收到集群中的消息并执行耗时代码后完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46384323/

26 4 0