CompletableFuture 开启异步线程,主线程不等待

在Java中CompletableFuture用于异步编程,异步编程是编写非阻塞的代码,运行的任务在一个单独的线程,与主线程隔离,并且会通知主线程它的进度,成功或者失败。

在这种方式中,主线程不会被阻塞,不需要一直等到子线程完成。主线程可以并行的执行其他任务。

使用这种并行方式,可以极大的提高程序的性能。

一般应用场景:在业务开发中可能会遇到调用多个第三方接口,同时要求主流程不被阻塞。

复制代码
    public static void main(String[] args) throws Exception {
        // 开启一个线程(无返回值)
        CompletableFuture<Void> voidCompletableFuture = CompletableFuture.runAsync(() -> {
            try {
                TimeUnit.SECONDS.sleep(3);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        });
        // 开启一个线程(有返回值)
        CompletableFuture<Integer> integerCompletableFuture = CompletableFuture.supplyAsync(() -> {
            try {
                Thread.sleep(3);
                return 1;
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        });
        {
            // do things
        }
        // 等待异步现成执行完
        CompletableFuture.allOf(integerCompletableFuture).get();
        // 等待多个异步现成执行完
        CompletableFuture.allOf(voidCompletableFuture,integerCompletableFuture).get();
        // 打印异步结果
        System.out.println(integerCompletableFuture.get());
        System.out.println("over");
    }
相关推荐
码农阿豪3 分钟前
Oracle 到金仓数据库迁移实战:一次真正“落地”的国产替代之旅
java·数据库·oracle
2301_817497334 分钟前
C++中的装饰器模式高级应用
开发语言·c++·算法
m0_549416667 分钟前
C++编译期字符串处理
开发语言·c++·算法
m0_581124197 分钟前
C++中的适配器模式实战
开发语言·c++·算法
Coding茶水间14 分钟前
基于深度学习的狗品种检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
开发语言·人工智能·深度学习·yolo·目标检测·机器学习
£漫步 云端彡22 分钟前
Golang学习历程【第十篇 方法(method)与接收者】
开发语言·学习·golang
小王不爱笑13223 分钟前
SpringBoot 整合 Ollama + 本地 DeepSeek 模型
java·spring boot·后端
毕设源码-钟学长24 分钟前
【开题答辩全过程】以 高校宿舍分配系统设计与实现为例,包含答辩的问题和答案
java
何中应25 分钟前
IDEA 中让 Git 忽略 .idea 目录
java·git·intellij-idea
無森~25 分钟前
HBase优化面试题
java·面试·hbase