CompletableFuture runAsync vs supplyAsync,什么时候选择一个而不是另一个?



选择一个而不是另一个的理由是什么?阅读文档后,我可以推断出的唯一区别是 runAsync 将 Runnable 作为输入参数,而 supplyAsync 将供应商作为输入参数。

这篇 stackoverflow 帖子讨论了将供应商与 supplyAsync 方法一起使用背后的动机,但它仍然没有回答何时更喜欢一个而不是另一个。

runAsync 将 Runnable 作为输入参数并返回CompletableFuture<Void>,这意味着它不返回任何结果。

CompletableFuture<Void> run = CompletableFuture.runAsync(()-> System.out.println("hello"));

但是 suppyAsync 将供应商作为参数并返回带有结果值的CompletableFuture<U>,这意味着它不接受任何输入参数,但它返回结果作为输出。

CompletableFuture<String> supply = CompletableFuture.supplyAsync(() -> {
System.out.println("Hello");
return "result";
});
System.out.println(supply.get());  //result

结论 :因此,如果您希望返回结果,请选择supplyAsync或者如果您只想运行异步操作,请选择runAsync.

最新更新