CompletableFuture supplyAsync runAsync 有什么区别
时间: 2023-12-09 22:37:24 浏览: 84
CompletableFuture中的supplyAsync和runAsync都是用于异步执行任务的方法,但它们之间有一些区别:
1. supplyAsync方法是带有返回值的异步任务,而runAsync方法是没有返回值的异步任务。
2. supplyAsync方法需要传入一个Supplier类型的参数,该参数提供了异步执行的任务,并且返回一个CompletableFuture对象,该对象可以用于获取异步任务的结果。
3. runAsync方法需要传入一个Runnable类型的参数,该参数提供了异步执行的任务,但是没有返回值。
4. supplyAsync方法可以使用默认的线程池(ForkJoinPool.commonPool())执行异步任务,也可以使用自定义的线程池执行异步任务。而runAsync方法只能使用默认的线程池执行异步任务。
下面是一个使用supplyAsync方法的例子:
```java
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步执行的任务
return "Hello World!";
});
// 获取异步任务的结果
String result = future.get();
System.out.println(result); // 输出:Hello World!
```
下面是一个使用runAsync方法的例子:
```java
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
// 异步执行的任务
System.out.println("Hello World!");
});
// 等待异步任务执行完成
future.get();
```
阅读全文