当前位置: 首页 > news >正文

[AIGC] CompletableFuture如何实现任务链式调用?

Java 中的 CompletableFuture 提供了多种方法来支持任务链式调用。这些方法允许你将一组操作链接在一起,形成一个任务链,每一个任务只有在上一个任务成功完成后才会被执行。现在,我们来看一下一些常用的链接任务的方法:

  1. thenApply():这个方法可以接收一个 Function 实例,用来处理上一个阶段计算后的结果,生成一个新的 CompletableFuture:
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {return 100;
});
CompletableFuture<String> future2 = future.thenApply(i -> i * 2).thenApply(i -> i.toString());
  1. thenAccept():这个方法和 thenApply() 很类似,但是不同的是,它的入参是一个 Consumer,它没有返回值:
CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {return 100;
});
future.thenAccept(System.out::println);
  1. thenRun():这个方法既不需要上一阶段的结果,也没有返回值,它接收一个 Runnable 参数:
CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {return 100;
});
future.thenRun(() -> System.out.println("Finished"));
  1. thenCompose():这个方法接收一个 Function,它的入参是上一阶段的结果,返回值必须是一个新的 CompletableFuture,用于链接两个 CompletableFuture:
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {return 100;
});
CompletableFuture<Integer> future2 = future.thenCompose(i -> CompletableFuture.supplyAsync(() -> i * 2));

以上方法都是异步的,也就是说,它们返回的 CompletableFuture 对象完成的时间不受代码顺序的约束。此外,所有这些方法都有一个"Async"的版本,比如 thenApplyAsync(),他们可以让后续的阶段异步的执行,也就是在新的线程里,更进一步提高程序的并发性能。

结合这些方法,我们可以创建出一连串的任务,每个任务都是在上一个任务完成之后开始,这就是 CompletableFuture 任务链的实现方式。

http://www.lryc.cn/news/352856.html

相关文章:

  • 神奇动物在哪里?斯洛文尼亚旅游之野生动物寻踪
  • 电商项目之有趣的支付签名算法
  • Web开发核心
  • 【Python】【Scrapy 爬虫】理解HTML和XPath
  • 【CTF Web】CTFShow web5 Writeup(SQL注入+PHP+位运算)
  • LeetCode 968.监控二叉树 (hard)
  • 数理逻辑:1、预备知识
  • 14-云原生监控体系-Redis_exporter 监控 MySQL[部署Dashborad告警规则实战]
  • DOS学习-目录与文件应用操作经典案例-xcopy
  • Midjourney是一个基于GPT-3.5系列接口开发的免费AI机器人
  • v-model详解
  • ArcGIS中分割与按属性分割的区别
  • 就业班 第三阶段(ELK) 2401--5.20 day1 ELK 企业实战 ES+head+kibana+logstash部署(最大集群)
  • PCM和QAM
  • Mongodb分布式id
  • AI模型抉择:开源VS闭源,谁主沉浮?
  • 佩戴安全头盔监测识别摄像机
  • 5.24学习记录
  • 创建FreeRTOS工程
  • HTML中 video标签样式铺满全屏
  • vue项目移动端商场
  • Golang | Leetcode Golang题解之第97题交错字符串
  • 2024电工杯B题:大学生平衡膳食食谱的优化设计及评价
  • 齐护K210系列教程(三十二)_在线模型训练
  • 碌时刻必备!微信自动回复让你告别消息堆积
  • 【ARM 裸机】按键输入
  • 站在ESG“20+”新起点上,看中国ESG先锋探索力量
  • 【CTF Web】CTFShow web4 Writeup(SQL注入+PHP+字符型注入)
  • 软件设计师备考 | 案例专题之数据库设计 概念与例题
  • 【全网最全】2024电工杯数学建模A题成品论文+前三题完整解答matlab+py代码等(后续会更新成品论文)