我将使用CompletableFuture我的异步调用。我想知道是否有到延迟执行的方式。我有一个流量约5异步调用,而我链接,然后使用thenApply / thenCompose要求。我的问题是,当我创建第一个CF的呼叫时,它就会开始执行,每当一个线程是免费的。我想首先我所有的任务都链接,然后当我打电话,说完整的(),它开始执行。我所寻找的是类似的中间业务在Java流的东西。我有这方面在我前面的SO问题之一一些帮助,但它没有解决我的目的。
我的技术堆栈只允许Java 8,所以不能用在未来的版本中推出的所有功能。
我不会写评论,所以我不能要求澄清。请原谅我,如果我没有理解正确的,你需要什么。从我可以告诉,你基本上只是在寻找一种方式来延迟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");
});
}