选择一个而不是另一个的理由是什么?在阅读文档后,我可以推断出的唯一区别是runAsync将Runnable作为输入参数,而supplyAsync将Supplier作为输入参数。This stackoverflow帖子讨论了使用Supplier和supplyAsync方法的动机,但仍然没有回答何时更喜欢一个。
ssm49v7z1#
runAsync将Runnable作为输入参数并返回CompletableFuture<Void>,这意味着它不返回任何结果。
CompletableFuture<Void>
CompletableFuture<Void> run = CompletableFuture.runAsync(()-> System.out.println("hello"));
但是suppyAsync将Supplier作为参数,并返回带有结果值的CompletableFuture<U>,这意味着它不接受任何输入参数,但将结果作为输出返回。
CompletableFuture<U>
CompletableFuture<String> supply = CompletableFuture.supplyAsync(() -> { System.out.println("Hello"); return "result"; }); System.out.println(supply.get()); //result
**结论:**所以如果你想返回结果,那么选择supplyAsync,或者如果你只是想运行异步操作,那么选择runAsync。
supplyAsync
runAsync
1条答案
按热度按时间ssm49v7z1#
runAsync将Runnable作为输入参数并返回
CompletableFuture<Void>
,这意味着它不返回任何结果。但是suppyAsync将Supplier作为参数,并返回带有结果值的
CompletableFuture<U>
,这意味着它不接受任何输入参数,但将结果作为输出返回。**结论:**所以如果你想返回结果,那么选择
supplyAsync
,或者如果你只是想运行异步操作,那么选择runAsync
。