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

java CompletableFuture 异步编程工具用法2

CompletableFuture  用于简化多线程任务的编排和结果处理. 

1、组合操作:

// 组合操作static void testCompletableFuture4() throws ExecutionException, InterruptedException {// 支持并行组合多个 CompletableFuture,适用于合并多个异步任务的结果CompletableFuture<Integer> futureA = CompletableFuture.supplyAsync(() -> 9526);CompletableFuture<Integer> futureB = CompletableFuture.supplyAsync(() -> 1);CompletableFuture<Integer> combined = futureA.thenCombine(futureB, Integer::sum);System.out.println("sum : " + combined.get());}

打印:

2、异常处理

static void testCompletableFuture5() throws ExecutionException, InterruptedException {System.out.println("random res: " + CompletableFuture.supplyAsync(() -> {if (Math.random() > 0.5) throw new RuntimeException("猛将兄");return "秋香姑娘";}).exceptionally(Throwable::getMessage).get());}

有时打印:

有时打印:

关键api:

该工具类适用于并行任务或流水线任务,还可以设置任务超时的处理。 但需尽量避免阻塞(用thenAccept代替get方法)。另外,不适合高并发场景,防止默认线程池资源竞争。

相关文章:

  • SpringBoot学生宿舍管理系统开发实现
  • 中间件-RocketMQ
  • IPFS集群部署
  • 【JS逆向基础】并发爬虫
  • Linux复习笔记(一)基础命令和操作
  • 技术分享:Franka机器人新方案——双臂数据采集与适应性安装,带你探索具身智能的奥秘
  • C# NX二次开发:曲线和点位相关UFUN函数详解
  • 15_sysfsLinux内核模块
  • 在 R 中,清除包含 NA(缺失值)的数据
  • AOP封装进行批量的数据查询并填充
  • 探索智能体的记忆:类型、策略和应用
  • MySQL优化-MySQL常用查询命令
  • MATLAB三维可视化技术解析
  • 引用的使用
  • 什么是跨域,如何解决跨域问题
  • 脑图谱:脑机接口的必由之路——技术突破与产业转化的系统性思考
  • CI/CD与DevOps流程流程简述(给小白运维提供思路)
  • element-plus中,vue3项目,el-input密码框禁止浏览器自动弹出浏览器历史密码提示框
  • 关于Stream
  • 使用ffmpeg截取MP3等音频片段
  • 气象干旱黄色预警继续:陕西西南部、河南西南部等地特旱
  • 碧桂园:砸锅卖铁保交房、持续推进保主体,尽快让公司恢复正常经营
  • 深圳市政协原副主席王幼鹏被“双开”
  • 中铁房地产24.7亿元竞得上海松江新城宅地,溢价率20.42%
  • 山东14家城商行中,仅剩枣庄银行年营业收入不足10亿
  • 国家出口管制工作协调机制办公室部署开展打击战略矿产走私出口专项行动