异步调用

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(); // 等待异步任务完成,即使有异常也会被处理完并返回结果(如果有)
    }
}

 

posted @ 2026-02-02 13:47  ConfidentLiu  阅读(12)  评论(0)    收藏  举报