1. 异步执行一个方法
import java.util.concurrent.CompletableFuture;
public class AsyncExample {
public static void main(String[] args) {
CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
// 这里是你要异步执行的方法
System.out.println("执行了一个异步任务");
});
future.join(); // 等待异步任务完成
}
}
2. 异步执行一个返回结果的方法
import java.util.concurrent.CompletableFuture;
public class AsyncExample {
public static void main(String[] args) {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 这里是你要异步执行的方法,并返回结果
return "返回的结果";
});
future.thenAccept(result -> System.out.println(result)) // 使用thenAccept来处理结果
.join(); // 等待异步任务完成
}
}
3. 组合多个异步任务
import java.util.concurrent.CompletableFuture;
public class AsyncExample {
public static void main(String[] args) {
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> {
// 第一个异步任务
return "结果1";
});
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> {
// 第二个异步任务,依赖于第一个任务的完成结果
return future1.thenApply(result1 -> result1 + " 附加结果");
});
future2.thenAccept(result -> System.out.println(result)) // 处理最终结果
.join(); // 等待异步任务完成
}
}
4. 处理异常
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class AsyncExample {
public static void main(String[] args) {
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 这里是可能抛出异常的代码块
throw new RuntimeException("出错了"); // 模拟异常情况
});
future.exceptionally(ex -> { // 处理异常情况
System.err.println("处理异常: " + ex.getMessage());
return "异常处理结果"; // 可以返回一个默认值或者错误信息等
}).join(); // 等待异步任务完成,即使有异常也会被处理完并返回结果(如果有)
}
}