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

java CompletableFuture 异步编程工具用法1

1、测试异步调用:

static void testCompletableFuture1() throws ExecutionException, InterruptedException {// 1、无返回值的异步任务。异步线程执行RunnableCompletableFuture.runAsync(() -> System.out.println("only you"));// 2、有返回值的异步任务。执行Supplier函数并返回结果CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "3个时辰内必须找人解毒,不过老夫也可以帮忙哦");System.out.println("supplyAsync, result: " + future.get()); // 阻塞获取结果}

打印:

2、链式调用:

static void testCompletableFuture2() throws ExecutionException, InterruptedException {System.out.println("main thread, id: " +  Thread.currentThread().getId());// 链式操作CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {System.out.println("supplyAsync thread: " + Thread.currentThread().getId());return "我行我素";});// 结果转换future = future.thenApply(s -> {System.out.println("thenApply thread: " + Thread.currentThread().getId());return s + " !!!";});// 结果消费CompletableFuture<Void> future2 = future.thenAccept(s -> {System.out.println("thenAccept thread: " + Thread.currentThread().getId());System.out.println(s);// 输出结果});}

打印:

3、依赖其他Future任务

// thenCompose()串联多个异步任务,前一个任务结果为后一个任务的输入static void testCompletableFuture3() throws ExecutionException, InterruptedException {CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "haiyangxuanfeng");future = future.thenCompose(s -> CompletableFuture.supplyAsync(s::toUpperCase));future.thenAccept(new Consumer<String>() {@Overridepublic void accept(String s) {System.out.println(s);}}).get();}

打印:

相关文章:

  • Model Context Protocol (MCP)笔记
  • uniapp中用canvas绘制简单柱形图,小容量,不用插件——简单使用canvas
  • 五一作业-day04
  • 五一の自言自语 2025/5/5
  • 【瞎折腾/mi50 32G/ubuntu】mi50显卡ubuntu运行大模型开坑(二)使用llama.cpp部署Qwen3系列
  • 【深度学习-Day 6】掌握 NumPy:ndarray 创建、索引、运算与性能优化指南
  • 手机打电话时由对方DTMF响应切换多级IVR语音应答(一)
  • 三、【LLaMA-Factory实战】模型微调进阶:从LoRA到MoE的技术突破与工程实践
  • 微服务中怎么获取请求头信息
  • WSL 安装 Debian 后,apt get 如何更改到国内镜像网址?
  • Python从入门到高手8.2节-元组的常用操作符
  • R004 -计算机硬件基础
  • Matlab实现基于CNN-GRU的锂电池SOH估计
  • Vite简单介绍
  • 五一作业-day03
  • Baklib知识中台:智能服务架构新实践
  • Java求职面试:Spring Boot与微服务的幽默探讨
  • 【Hive入门】Hive安全管理与权限控制:用户认证与权限管理深度解析
  • 代码随想录算法训练营第三十二天
  • MATLAB人工大猩猩部队GTO优化CNN-LSTM多变量时间序列预测
  • 线下无理由退货怎样操作?线上线下监管有何不同?市场监管总局回应
  • 北美票房|“雷霆”开画票房比“美队4”低,但各方都能接受
  • 特朗普要征100%关税,好莱坞这批境外摄制新片有麻烦了
  • 中南财经政法大学法学院党委副书记易育去世,终年45岁
  • 猎金,游戏,诚不我欺
  • 客场不敌蓉城遭遇联赛首败,申花争冠需要提升外援能力