CompletableFuture延迟执行代码的方法
时间: 2024-04-11 18:25:19 浏览: 393
Java8新的异步编程方式CompletableFuture实现
CompletableFuture是Java8引入的一个类,用于支持异编程和并发操作它提供了一种延迟执行代码的方法,可以在后台线程中执行任务,并在任务完成后获取结果。
CompletableFuture延迟执行代码的方法有以下几种:
1. 使用静态方法`CompletableFuture.runAsync()`来执行没有返回值的异步任务。例如:
```java
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
// 执行异步任务的代码
});
```
2. 使用静态方法`CompletableFuture.supplyAsync()`来执行有返回值的异步任务。例如:
```java
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 执行异步任务的代码,并返回结果
return "Hello, CompletableFuture!";
});
```
3. 使用`thenRun()`方法来在任务完成后执行一段代码,不关心任务的结果。例如:
```java
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
// 执行异步任务的代码
}).thenRun(() -> {
// 在任务完成后执行的代码
});
```
4. 使用`thenApply()`方法来在任务完成后对结果进行处理。例如:
```java
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 执行异步任务的代码,并返回结果
return "Hello, CompletableFuture!";
}).thenApply(result -> {
// 对结果进行处理,并返回处理后的结果
return result.toUpperCase();
});
```
5. 使用`thenCompose()`方法来在任务完成后将结果传递给另一个CompletableFuture进行处理。例如:
```java
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> {
// 执行异步任务的代码,并返回结果
return "Hello";
});
CompletableFuture<String> future2 = future1.thenCompose(result -> {
// 对结果进行处理,并返回另一个CompletableFuture
return CompletableFuture.supplyAsync(() -> result + ", CompletableFuture!");
});
```
阅读全文