首页/新闻资讯/正文详情

【Java异步编程】CompletableFuture综合实战:泡茶喝水与复杂的异步调用

发布时间:2026/11/3 9:20:12 来源:云帆数科 栏目:资讯中心
【Java异步编程】CompletableFuture综合实战:泡茶喝水与复杂的异步调用
文章目录一. 两个异步任务的合并泡茶喝水二. 复杂的异步调用结果依赖以及异步执行调用等一. 两个异步任务的合并泡茶喝水下面的代码中我们实现泡茶喝水。这里分3个任务任务1负责洗水壶、烧开水任务2负责洗茶壶、洗茶杯和拿茶叶任务3负责泡茶。其中任务3要等待任务1和任务2都完成后才能开始。publicclassDrinkTea{privatestaticfinalintSLEEP_GAP3;//等待3秒publicstaticvoidmain(String[]args){// 异步任务1CompletableFutureBooleanwashJobCompletableFuture.supplyAsync(()-{Print.tcfo(洗茶杯);//线程睡眠一段时间代表清洗中sleepSeconds(SLEEP_GAP);Print.tcfo(洗完了);returntrue;});// 异步任务2CompletableFutureBooleanhotJobCompletableFuture.supplyAsync(()-{Print.tcfo(洗好水壶);Print.tcfo(烧开水);//线程睡眠一段时间代表烧水中sleepSeconds(SLEEP_GAP);Print.tcfo(水开了);returntrue;});// 等待任务12执行完成后任务3执行thenCombineCompletableFutureStringdrinkJob//hotOk、washOK指的是两个异步任务的返回结果washJob.thenCombine(hotJob,(hotOk,washOK)-{if(hotOkwashOK){Print.tcfo(泡茶喝茶喝完);return茶喝完了;}return没有喝到茶;});// 阻塞主线程等待任务 3 执行结果Print.tco(drinkJob.join());}执行日志[ForkJoinPool.commonPool-worker-9|DrinkTea.lambda$main$0]洗茶杯 [ForkJoinPool.commonPool-worker-2|DrinkTea.lambda$main$1]洗好水壶 [ForkJoinPool.commonPool-worker-2|DrinkTea.lambda$main$1]烧开水 [ForkJoinPool.commonPool-worker-9|DrinkTea.lambda$main$0]洗完了 [ForkJoinPool.commonPool-worker-2|DrinkTea.lambda$main$1]水开了 [ForkJoinPool.commonPool-worker-9|DrinkTea.lambda$main$2]泡茶喝茶喝完 [main]茶喝完了 JVM退出钩子(定时和顺序任务线程池) starting.... JVM退出钩子(定时和顺序任务线程池) 耗时(ms): 1通过整体的执行过程可以发现给任务分配线程的工作由线程池自动完成。任务之间的依赖关系一目了然。以下面的伪代码为例job3job1.thenCombine(job2,(result1,result2)-{回调逻辑})等待任务12执行完成后任务3执行thenCombine其中result1、result2是任务1、任务2的返回值。基于两个异步任务的返回值判断是否进行泡茶喝。join 阻塞主线程等待任务 3 执行结果参考《Java高并发核心编程》-尼恩二. 复杂的异步调用结果依赖以及异步执行调用等具体代码查看gitee提交[并发编程]CompletableFuture实现复杂的异步调用结果依赖以及异步执行调用等具体实现了通过策略模式实现了流程下各个执行逻辑通过使用CompletableFuture实现各执行逻辑异步执行通过使用thenRunAsync等待前面步骤执行进而实现5,6步的异步执行加快执行速度使用CompletableFuture.allOf(step5, step6)合并5,6步的结果。

相关推荐

【人工智能基础2】【4】生成模型基础扫盲
【人工智能基础2】【4】生成模型基础扫盲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:20:12

【人工智能基础】Sora 模型的基本原理、优缺点
【人工智能基础】Sora 模型的基本原理、优缺点

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:20:12

LTX-Best-Face-ID提示词工程指南:如何编写让AI精准理解的身份描述
LTX-Best-Face-ID提示词工程指南:如何编写让AI精准理解的身份描述

LTX-Best-Face-ID提示词工程指南:如何编写让AI精准理解的身份描述 LTX-Best-Face-ID是一款基于LTX-2.3模型的身份保留参考转视频LoRA工具,能够根据人物参考图片和文本提示生成保持身份特征的视频内容。本文将详细介绍如何通过提示词工程让AI精准理解身份… · 2026/11/3 9:19:10

如何快速部署Mistral Medium 3.5 128B:5步完成本地vLLM服务器搭建
如何快速部署Mistral Medium 3.5 128B:5步完成本地vLLM服务器搭建

如何快速部署Mistral Medium 3.5 128B:5步完成本地vLLM服务器搭建 Mistral Medium 3.5 128B是一款具有1280亿参数的强大开源AI模型,支持256k超长上下文窗口,具备多模态输入、函数调用和推理能力。本文将通过5个简单步骤,教你如何… · 2026/11/3 9:52:57

MiniMax-Text-01:400亿级MoE模型如何突破400万token上下文?
MiniMax-Text-01:400亿级MoE模型如何突破400万token上下文?

MiniMax-Text-01:400亿级MoE模型如何突破400万token上下文? 导语:MiniMax最新发布的4560亿参数混合架构大模型MiniMax-Text-01,通过创新技术组合实现400万token超长上下文处理能力,在多项长文本任务中表现超越主流商业… · 2026/11/3 9:52:57

【58】舌象数据集(有v5/v8模型)/YOLO舌象检测
【58】舌象数据集(有v5/v8模型)/YOLO舌象检测

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:52:57

【大数据框架】Calcite 基础概念:从 SQL 到执行计划的思维路径
【大数据框架】Calcite 基础概念:从 SQL 到执行计划的思维路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 9:51:56

Qwen3-Omni:多模态AI实时交互全攻略
Qwen3-Omni:多模态AI实时交互全攻略

Qwen3-Omni:多模态AI实时交互全攻略 导语 Qwen3-Omni-30B-A3B-Instruct正式发布,作为一款原生支持文本、图像、音视频输入并实时生成语音的多语言全模态模型,它标志着AI交互从单一模态向"感知-理解-响应"全链路智能化的跨越。 行… · 2026/11/3 9:51:56

三环境测试全覆盖:OpenRouter ai-sdk-provider Node、Edge与E2E测试体系解析
三环境测试全覆盖:OpenRouter ai-sdk-provider Node、Edge与E2E测试体系解析

【免费下载链接】ai-sdk-provider The OpenRouter provider for the Vercel AI SDK contains support for hundreds of models through the OpenRouter chat and completion APIs. 项目地址: https://gitcode.com/gh_mirrors/ai/ai-sdk-provider 点击查看 免费下载 … · 2026/11/3 9:51:56

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码