news 2026/9/11 3:54:09

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/9/3 0:31:51

LosslessCut无损视频剪辑工具终极配置指南

LosslessCut无损视频剪辑工具终极配置指南 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut LosslessCut是一款跨平台的无损视频剪辑工具,专为追求高效编辑的…

作者头像 李华
网站建设 2026/9/5 22:34:19

终极免费PDF工具集:Poppler-Windows完整使用指南

终极免费PDF工具集:Poppler-Windows完整使用指南 【免费下载链接】poppler-windows Download Poppler binaries packaged for Windows with dependencies 项目地址: https://gitcode.com/gh_mirrors/po/poppler-windows 还在为PDF文档处理而烦恼吗&#xff1…

作者头像 李华
网站建设 2026/9/10 14:14:16

Anaconda配置PyTorch环境冗余?Miniconda按需安装

Miniconda:重塑高效深度学习环境的工程实践 在现代 AI 开发中,一个看似不起眼却影响深远的问题正在浮现:为什么我刚下载完 Anaconda,硬盘就少了 3GB?更让人头疼的是,明明只是想跑个 PyTorch 示例&#xff0…

作者头像 李华
网站建设 2026/9/10 0:27:47

猫抓资源嗅探器:解锁网页媒体资源的一键获取神器

还在为无法保存心仪的在线视频而烦恼吗?猫抓资源嗅探器作为一款专业的浏览器扩展工具,能够智能识别并捕获网页中的各类媒体资源,让你轻松实现一键下载。无论是想保存在线课程、收藏短视频,还是批量获取图片素材,这款资…

作者头像 李华
网站建设 2026/9/8 2:06:38

PCIe-Rule(IDO、RO、No-snoop、TC、No-post Request)

Relaxed Ordering and ID-Based Ordering Attributes 表格定义了2-bit属性编码对应的四种硬件排序约束: 00 (默认):必须遵循最严格的PCI强排序模型。这是最保守、兼容性最好的模式,但可能限制并发性能。是上电默认或未启用高级特性时的状态。 01 (宽松排序-RO):允许对某些…

作者头像 李华
网站建设 2026/9/3 0:32:00

PyTorch模型导出ONNX:Miniconda-Python3.11环境验证

PyTorch模型导出ONNX:Miniconda-Python3.11环境验证 在深度学习工程实践中,一个训练好的模型如果无法顺利部署到生产环境,那它的价值就大打折扣。我们经常遇到这样的情况:本地用PyTorch跑得很好的模型,在目标设备上却因…

作者头像 李华