CompletableFuture

简介: CompletableFuture

CompletableFuture为什么出现

Future的get() 方法在计算完成之前会一直处在阻塞状态下,isDone() 方法容易耗费cpu资源,对于真正的异步处理,我们希望可以传入回调函数,在furue结束的时候自动调用改回调函数,这样我们就不用等待结果。

阻塞的方式和异步编程的设计理念是违背,而轮询的方式会耗费无谓的cpu资源 。因此JDK8设计出CompletableFuture。CompletableFuture提供了一种观察者模式类似的机制,可以让任务执行完成后通知监听的一方。

image.png

image.png

image.png

CompletionStage

  • CompletionStage代表异步计算过程中的某一个阶段,一个阶段完成后可能会触发另外一个阶段
  • 一个阶段的计算执行可以是一个Fuction,Consumer或者Runnable。比如:

stage.thenApply(x->square(x)).thenAccept(x->System.out.print(x)).thenRun(()->System.out.print())

  • 一个阶段的执行可能是被单个阶段完成后触发,也可能是由多个阶段一起触发。

代表异步计算过程中的某一个阶段,一个阶段完成后可能触发另外一个阶段,有点类似Linux系统的管道 分隔符参数。

CompletableFuture

  • 在java8中,CompletableFuture提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通过回调的方式处理计算结果,也提供了转换和组合CompletableFuture的方法。
  • 它可能代表一个明确完成的Future,也有可能代表一个完成阶段(CompletionStage),它支持计算完成以后触发一些函数或者执行某些动作。
  • 它实现了Future和CompletionStage接口


目录
相关文章
|
安全 网络安全 网络虚拟化
这40个网络工程师必知术语,背上!
【7月更文挑战第26天】
595 11
这40个网络工程师必知术语,背上!
|
IDE 安全 程序员
IDE暗黑主题推荐-Dracula
Dracula 为 JetBrains IDE 带来了出色的高对比度黑暗风格,本文向大家推荐了这款插件的优秀之处。如果你还没有尝试过这款插件,不妨让 Dracula 来点缀你的 IDE,体验它的魅力所在吧。
275 2
|
JSON 缓存 easyexcel
|
11天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
9天前
|
存储 人工智能 搜索推荐
终身学习型智能体
当前人工智能前沿研究的一个重要方向:构建能够自主学习、调用工具、积累经验的小型智能体(Agent)。 我们可以称这种系统为“终身学习型智能体”或“自适应认知代理”。它的设计理念就是: 不靠庞大的内置知识取胜,而是依靠高效的推理能力 + 动态获取知识的能力 + 经验积累机制。
342 130
|
9天前
|
存储 人工智能 Java
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
本文讲解 Prompt 基本概念与 10 个优化技巧,结合学术分析 AI 应用的需求分析、设计方案,介绍 Spring AI 中 ChatClient 及 Advisors 的使用。
430 130
AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话