您的位置:首页 > 新闻 > 会展 > CompletableFuture 的使用和实际业务中的应用

CompletableFuture 的使用和实际业务中的应用

2025/8/26 7:48:38 来源:https://blog.csdn.net/modelsetget/article/details/141297403  浏览:    关键词:CompletableFuture 的使用和实际业务中的应用

一、同步与异步概念

  • 同步:程序执行任务时阻塞当前线程,直到任务完成,后续代码等待任务完成后继续执行。
  • 异步:程序执行任务时不阻塞当前线程,任务由其他线程执行,当前线程可继续其他操作,任务完成后通过回调等方式处理结果。

二、使用异步编排的原因

  • 异步编排可以提高程序效率,如商品详情页的查询,通过异步化可以显著减少用户等待时间。

三、Java异步编程的演进

  • Future:Java 1.5引入,功能简单,无法处理复杂异步任务链。
    • 局限性:阻塞获取结果、缺乏组合功能、异常处理复杂。
  • CompletableFuture:Java 8引入,提供强大灵活的异步编程支持。

四、CompletableFuture的主要特点

  • 表示异步计算结果。
  • 提供非阻塞操作。
  • 组合多个异步任务。
  • 处理异常。
  • 构建复杂异步流。

五、CompletableFuture的使用

  1. runAsyncsupplyAsync

    • runAsync:无返回值的异步任务,如日志记录。
    • supplyAsync:有返回值的异步任务,如获取数据。
  2. whenCompleteexceptionally

    • whenComplete:无论成功或失败都执行的回调。
    • exceptionally:仅在异常时执行,处理异常并返回替代结果。
  3. whenCompleteAsyncthenApplyAsync

    • whenCompleteAsync:异步执行回调。
    • thenApplyAsync:异步执行并返回新值。
  4. thenAcceptthenApply

    • thenAccept:处理结果但不返回新值。
    • thenApply:处理结果并返回新值。

六、异步编排实战案例

  • 用线程池和CompletableFuture模拟商品详情页查询,优化了执行时间。

七、异步编排使用场景

  • 并行调用多个微服务。
  • 异步批量处理任务。
  • 异步处理用户请求并返回聚合结果。
  • 异步执行复杂工作流。

八、总结

  • 根据任务是否需要返回结果选择runAsyncsupplyAsync
  • 使用whenCompletewhenCompleteAsync在任务完成后执行操作。
  • 使用exceptionally处理异常。
  • 使用thenAcceptthenApply根据需要处理结果。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com