java CompletableFuture使用
Java的CompletableFuture是一个异步编程的工具,它提供了一种简单而强大的方式来编写并发代码。CompletableFuture类实现了Future接口,并且可以通过调用方法链来串联多个异步操作。
下面是一些使用CompletableFuture的示例:
- 创建一个CompletableFuture对象:
CompletableFuture<String> future = new CompletableFuture<>();
- 异步执行一个任务,并在任务完成时触发回调:
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 执行一些耗时的任务
return "Hello, world!";
});
future.thenAccept(result -> {
// 处理任务的结果
System.out.println(result);
});
- 组合多个CompletableFuture对象:
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> "Hello");
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "world");
CompletableFuture<String> combinedFuture = future1.thenCombine(future2, (result1, result2) -> result1 + " " + result2);
combinedFuture.thenAccept(result -> {
// 处理组合后的结果
System.out.println(result);
});
- 异常处理:
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 执行一些可能抛出异常的任务
throw new RuntimeException("Task failed");
});
future.exceptionally(ex -> {
// 处理任务的异常
System.out.println("Task failed: " + ex.getMessage());
return null;
});
- 等待所有CompletableFuture完成:
CompletableFuture<String> future1 = CompletableFuture.supplyAsync(() -> "Hello");
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "world");
CompletableFuture<Void> allFutures = CompletableFuture.allOf(future1, future2);
allFutures.thenRun(() -> {
// 所有任务完成后的处理
System.out.println("All tasks completed");
});
这只是CompletableFuture的一小部分功能,它还提供了很多其他有用的方法,如thenApply、thenCompose、thenAcceptBoth等等。使用CompletableFuture可以更加灵活地处理并发任务,并且可以通过方法链的方式清晰地表达任务之间的依赖关系
原文地址: https://www.cveoy.top/t/topic/iQGk 著作权归作者所有。请勿转载和采集!