news 2026/4/16 12:28:11

Java常见技术分享-22-多线程安全-进阶模块-异步任务的协调者-CompletableFuture

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java常见技术分享-22-多线程安全-进阶模块-异步任务的协调者-CompletableFuture

简介(java.util.concurrent.CompletableFuture)

  • 他实现了Future接口和CompletionStage接口( Future接口提供了一些基础的方法, 用来获取异步任务的结果或者取消任务, 另一个接口则定义了一系列编排异步任务的方法,比如thenApply,allOf等让你可以方便的处理任务之间的依赖关系或者合并多个任务处理的结果)
  • 用来简化异步编程的类, 不用管理线程的创建,启动,销毁,只需要专注于任务以及任务之间的依赖关系(CompletableFuture通过链式调用的方式清晰表达依赖关系),他能帮助我们并行执行多个任务, 并把结果合并。

常用方法

  • 创建异步任务的方法

    • supplyAsync 用在有返回值的任务
    • runAsync 用在没有返回值的任务
  • 处理任务结果的方法

    • thenApply 接受任务执行结果, 并执行新函数 且返回一个新的CompletableFuture (查询用户ID, 完了用用户ID查询订单信息)
    • thenAccept 接口任务执行结果 并执行一些处理, 不会返回新的结果 (查询完订单信息 , 打印日志)
  • 组合多个任务的方法(传入之前创建任务返回的所有CompletableFuture,返回一个CompletableFuture(合并的))
    - allOf 同时启动所有任务且并行执行, 等待所有任务执行完, 才往下走。
    - anyOf 同时启动所有任务且并行执行,等待有一个任务执行完返回那个执行完的任务的结果, 就往下走。

  • 处理异常的方法

    • exceptionally 当任务出现异常, 就会执行exceptionally里的代码返回默认值。
  • 获取任务结果的方法
    - get 阻塞方法, 会抛出检查异常, 必须使用try catch强制处理
    - join 阻塞方法, 会抛出未检查异常, 不必强制处理

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/14 7:54:48

NCM格式转换指南:释放网易云音乐的全部播放潜力

还在为网易云音乐下载的歌曲无法在其他播放器上播放而困扰吗?想要摆脱特定平台的限制,在任何设备上自由欣赏你收藏的音乐吗?这个完整的NCM格式转换解决方案将为你打开音乐自由的大门! 【免费下载链接】ncmdump 项目地址: https…

作者头像 李华
网站建设 2026/4/4 13:32:56

使用Keil+J-Link进行HardFault_Handler问题定位操作指南

精准定位HardFault:用Keil J-Link 打造嵌入式调试“黑匣子”在嵌入式开发的战场上,没有比程序突然“卡死”或无声复位更令人抓狂的问题了。尤其当你面对一个看似正常的系统,在某个特定操作后毫无征兆地进入HardFault_Handler——此时LED不闪…

作者头像 李华
网站建设 2026/4/8 23:46:39

QML年度盘点以及在AI时代下的一点浅见

引言 2025 年,技术圈的喧嚣已不再仅仅围绕哪个框架更好用,而是谁能更高效地完成 AI 能力的落地。在Web前端依然深陷构建工具泥潭、移动端跨平台框架反复横跳的当下,QML 以其独特的“声明式语法强有力 C 后端”的组合,在嵌入式、车…

作者头像 李华
网站建设 2026/4/11 6:09:34

BBDown终极指南:轻松下载B站高清视频的5大实用技巧

还在为无法保存B站精彩内容而烦恼吗?当你发现学习资料即将过期,创作素材难以获取,或者喜爱的番剧面临下架,这些痛点正是BBDown要为你解决的核心问题。 【免费下载链接】BBDown Bilibili Downloader. 一款命令行式哔哩哔哩下载器. …

作者头像 李华