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");
    }
相关推荐
一晌小贪欢4 小时前
Python-11 Python作用域与闭包:LEGB规则深度解析
开发语言·python·python基础·python小白·python作用域·python小庄
西峰u4 小时前
Java--面向对象之封装篇!!!
java·开发语言
小小码农一只4 小时前
Spring WebFlux与响应式编程:构建高效的异步Web应用
java·前端·spring·spring webflux
Dest1ny-安全4 小时前
CTF 及网络安全相关平台汇总表
java·运维·服务器·python·安全·web安全
古城小栈4 小时前
Spring Bean初始化三种常用方式(详细易懂版)
java·数据库·spring
j***12154 小时前
Spring容器初始化扩展点:ApplicationContextInitializer
java·后端·spring
懒惰蜗牛4 小时前
Day65 | Java网络编程之TCP/IP协议
java·网络·tcp/ip·网络编程·osi七层模型·tcp/ip四层模型
k***82514 小时前
Spring注解
java·后端·spring
云霄IT4 小时前
python轮子:适配requests.request的aiohttp异步请求
开发语言·python
豆奶特浓64 小时前
谢飞机迎战金融风控面试:从Spring WebFlux、Elasticsearch到AI模型,他能扛住吗?
java·elasticsearch·微服务·ai·面试·spring webflux·金融风控