当前位置: 首页 > news >正文

Java 并发编程进阶:CompletableFuture 异步编程最佳实践

## 前言

 

CompletableFuture 是 Java 8 引入的强大异步编程工具,它实现了 Future 接口并支持流式调用。本文深入讲解 **CompletableFuture 的最佳实践**,帮助你构建高效异步应用。

 

---

 

## 一、CompletableFuture 基础

 

### 1.1 创建异步任务

 

```java

// 方式一:supplyAsync 有返回值

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {

    return "Hello Async";

});

 

// 方式二:runAsync 无返回值

CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {

    System.out.println("Running async");

});

```

 

### 1.3 thenApply vs thenApplyAsync

 

```java

// thenApply:使用同一线程执行

CompletableFuture<String> result = future.thenApply(s -> s + " World");

 

// thenApplyAsync:使用新线程执行(推荐)

CompletableFuture<String> result = future.thenApplyAsync(s -> s + " World");

```

 

---

 

## 二、组合异步任务

 

### 2.1 thenCompose 串联

 

```java

CompletableFuture<String> f1 = CompletableFuture

    .supplyAsync(() -> fetchUser())

    .thenCompose(user -> CompletableFuture.supplyAsync(() -> fetchOrders(user)));

```

 

### 2.2 thenCombine 并行

 

````java

CompletableFuture<User> userFuture = CompletableFuture.supplyAsync(this::getUser);

CompletableFuture<Order> orderFuture = CompletableFuture.supplyAsync(this::getOrder);

 

CompletableFuture<Result> result = userFuture

    .thenCombine(orderFuture, User::combineWidthOrder);

```

 

---

 

## 三、异常处理

 

### 3.1 exceptionally

 

```java

CompletableFuture<String> future = CompletableFuture

    .supplyAsync(() -> riskyOperation())

    .exceptionally(ex -> {

        log.error("Error: " + ex.getMessage());

        return "Default Value";

    });

```

 

### 3.2 handle - 无论成功失败都处理

 

````java

CompletableFuture<String> future = future

    .handle((result, ex) -> {

        if (ex != null) {

            return "Error: " + ex.getMessage();

        }

        return result;

    });

```

 

---

 

## 四、最佳实践

 

1. **使用自定义线程池**:避免使用默认的 ForkJoinPool

2. **合理使用 thenApplyAsync**:充分利用线程资源

3. **做好异常处理**:使用 handle 捕获所有异常

4. **避免 CompletableFuture 嵌套**:用 thenCompose 替代

 

---

 

> 想了解更多并发编程内容?可以查看我的系列文章《Java 并发编程实战》

 

祝编码愉快!

http://www.jsqmd.com/news/835449/

相关文章:

  • 合肥母婴除甲醛CMA甲醛检测治理公司哪家好权威机构 - 张诗林资源库
  • 凉山母婴除甲醛CMA甲醛检测治理公司哪家好权威机构 - 张诗林资源库
  • 德州母婴除甲醛CMA甲醛检测治理公司哪家好权威机构 - 张诗林资源库
  • 合肥母婴除甲醛CMA甲醛检测治理公司推荐品牌排行榜 - 张诗林资源库
  • 凉山母婴除甲醛CMA甲醛检测治理公司推荐品牌排行榜 - 张诗林资源库
  • 丽水母婴除甲醛CMA甲醛检测治理公司哪家好权威机构 - 张诗林资源库
  • 揭阳母婴除甲醛CMA甲醛检测治理公司哪家好权威机构 - 张诗林资源库
  • 河源母婴除甲醛CMA甲醛检测治理公司哪家好权威机构 - 张诗林资源库
  • 德州母婴除甲醛CMA甲醛检测治理公司推荐品牌排行榜 - 张诗林资源库
  • 2026年AI率高怎么降?亲测有效的10个降AI率方法:AIGC率降到5% - 降AI实验室
  • 金华母婴除甲醛CMA甲醛检测治理公司哪家好权威机构 - 张诗林资源库
  • 东莞母婴除甲醛CMA甲醛检测治理公司多少钱怎么收费 - 张诗林资源库
  • 河源母婴除甲醛CMA甲醛检测治理公司推荐品牌排行榜 - 张诗林资源库
  • 菏泽母婴除甲醛CMA甲醛检测治理公司多少钱怎么收费 - 张诗林资源库
  • 2026年青岛国际学校课程体系横评:国际认证、课程多元与升学成果深度解析 - 科技焦点
  • 2026年青岛国际学校管理哪家严?日常规范、寄宿管理与成长护航多维横评 - 科技焦点
  • 东莞母婴除甲醛CMA甲醛检测治理公司推荐品牌排行榜 - 张诗林资源库
  • 2026年非标搅拌设备定制源头厂家推荐:综合实力测评发布,优质企业选型参考 - 品牌企业推荐师(官方)
  • 菏泽母婴除甲醛CMA甲醛检测治理公司哪家好权威机构 - 张诗林资源库
  • 2024 CSP 邮寄
  • 东营母婴除甲醛CMA甲醛检测治理公司多少钱怎么收费 - 张诗林资源库
  • 2026年4月推荐:这些饭堂承包公司,服务优质口碑佳,湖南评价高的饭堂选哪家,创新管理模式,引领餐饮潮流 - 品牌推荐师
  • 东营母婴除甲醛CMA甲醛检测治理公司哪家好权威机构 - 张诗林资源库
  • 2026年|留学生如何做到Turnitin检测0%?一键去AI痕迹的秘诀在这! - 降AI实验室
  • 南京工业大学浦江学院就业优势全景报告:产教融合筑根基、就业赋能启新程 - 寻茫精选
  • 2026年沙尘地区光伏板无人机除尘清洁机构最新TOP排行/沙尘地区光伏板无人机除尘清洁哪家可靠,沙尘地区光伏板无人机除尘清洁找哪家 - 品牌推广大师
  • 如何配置 Linux auditd 服务记录关键系统调用以便安全审计?
  • 2026年4月小儿高烧药产品口碑推荐,扁桃体炎高烧药/肺炎高烧药/流感高烧药/高烧药/肺炎发烧药,高烧药产品哪家好 - 品牌推荐师
  • 2026年|最新12个降AI工具实测 - 降AI实验室
  • PTA作业集心得总结