是否有延迟completable未来的执行方式?

问题描述 投票:0回答:1

我将使用CompletableFuture我的异步调用。我想知道是否有到延迟执行的方式。我有一个流量约5异步调用,而我链接,然后使用thenApply / thenCompose要求。我的问题是,当我创建第一个CF的呼叫时,它就会开始执行,每当一个线程是免费的。我想首先我所有的任务都链接,然后当我打电话,说完整的(),它开始执行。我所寻找的是类似的中间业务在Java流的东西。我有这方面在我前面的SO问题之一一些帮助,但它没有解决我的目的。

我的技术堆栈只允许Java 8,所以不能用在未来的版本中推出的所有功能。

java asynchronous java-stream completable-future
1个回答
1
投票

我不会写评论,所以我不能要求澄清。请原谅我,如果我没有理解正确的,你需要什么。从我可以告诉,你基本上只是在寻找一种方式来延迟CompletableFuture的执行,直到你准备好这样做。

你有没有考虑给另一CF作为参数传递给要调用的函数?一旦你准备好了,只是完成这个CF,然后功能被执行。它去有点像这样:

CompletableFuture<Void> setup = new CompletableFuture<>();
delayedFunction(setup);

//do whatever you want
System.out.println("foo");

//once you are ready, complete setup to execute the delayed function
setup.complete(null);


public static CompletableFuture<Void> delayedFunction(CompletableFuture<Void> setup) {
  return setup.
    thenAccept(v-> {
      System.out.println("bar");
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.