java CompletableFuture runAsync与supplyAsync,何时选择一个?

yxyvkwin  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(175)

选择一个而不是另一个的理由是什么?在阅读文档后,我可以推断出的唯一区别是runAsync将Runnable作为输入参数,而supplyAsync将Supplier作为输入参数。
This stackoverflow帖子讨论了使用Supplier和supplyAsync方法的动机,但仍然没有回答何时更喜欢一个。

ssm49v7z

ssm49v7z1#

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

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

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

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

 System.out.println(supply.get());  //result

**结论:**所以如果你想返回结果,那么选择supplyAsync,或者如果你只是想运行异步操作,那么选择runAsync

相关问题