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");
    }
相关推荐
艾莉丝努力练剑5 分钟前
【QT】环境搭建收尾:认识Qt Creator
运维·开发语言·c++·人工智能·qt·qt creator·qt5
芒克芒克6 分钟前
JVM性能监控
java·jvm
南棱笑笑生8 分钟前
20260113给飞凌OK3588-C开发板适配Rockchip原厂的Android14系统时适配CAM3接口的OV5645
c语言·开发语言·rockchip
行稳方能走远8 分钟前
Android java 学习笔记3
android·java
WF_YL9 分钟前
IntelliJ IDEA 关闭保存时在文件末尾换行 -(取消保存自动末尾换行)
java·ide·intellij-idea
Larry_Yanan9 分钟前
Qt安卓开发(二)摄像头打开
android·开发语言·数据库·c++·qt·ui
撩得Android一次心动12 分钟前
Android Lifecycle 全面解析:掌握生命周期管理的艺术(1)
android·java·kotlin·lifecycle
lang2015092812 分钟前
Java高性能缓存库Caffeine全解析
java·缓存·linq
专注于大数据技术栈13 分钟前
java学习--什么是线程安全和不安全
java·学习·安全