supplyAsync、runAsync 区别
时间: 2023-08-10 10:59:04 浏览: 126
`supplyAsync` 和 `runAsync` 都是 CompletableFuture 类中的方法,用于提交异步任务。它们的区别在于返回值和参数类型的不同。
1. `supplyAsync(Supplier<U> supplier)` 方法:
- 返回一个 CompletableFuture 对象,该对象最终会产生一个结果值。
- 参数 `supplier` 是一个无参数函数,用于生成结果值。
- 适用于需要有返回结果的异步任务。
示例代码:
```java
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步任务逻辑
return "Hello, world!";
});
```
2. `runAsync(Runnable runnable)` 方法:
- 返回一个 CompletableFuture 对象,该对象最终不会产生任何结果值(即返回值为 Void)。
- 参数 `runnable` 是一个无返回值的函数,用于执行异步任务。
- 适用于不需要返回结果的异步任务。
示例代码:
```java
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
// 异步任务逻辑
System.out.println("Hello, world!");
});
```
总结来说,`supplyAsync` 适用于需要有返回结果的异步任务,而 `runAsync` 适用于不需要返回结果的异步任务。根据任务的需求,选择合适的方法可以使代码更加清晰和可读。
阅读全文