CompletableFuture runAsync vs supplyAsync,什么时候选择一个?

el *_*gli 15 java asynchronous java-8 completable-future

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

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

Dea*_*ool 30

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

CompletableFuture<Void> run = CompletableFuture.runAsync(()-> System.out.println("hello"));
Run Code Online (Sandbox Code Playgroud)

但是suppyAsync将 Supplier 作为参数并返回CompletableFuture<U>with result 值,这意味着它不接受任何输入参数但它返回结果作为输出。

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

 System.out.println(supply.get());  //result
Run Code Online (Sandbox Code Playgroud)

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

  • 为什么死侍要在矩阵中回复? (8认同)
  • 谢谢@Deadpool,我应该更仔细地阅读文档。顺便说一句,不错的用户名。 (2认同)