CompletableFuture的runAfterBothAsync

简介: CompletableFuture的runAfterBothAsyncrunAfterBothAsync:假设有两个线程A和B,这两个线程都是异步执行的,但是不确定A和B何时执行完毕,但是需要在A和B都执行完毕后运行线程C。

CompletableFuture的runAfterBothAsync


runAfterBothAsync:假设有两个线程A和B,这两个线程都是异步执行的,但是不确定A和B何时执行完毕,但是需要在A和B都执行完毕后运行线程C。

    private void test() {

        System.out.println("开始...");

        CompletableFuture.supplyAsync(new Supplier<String>() {
            @Override
            public String get() {
                try {
                    TimeUnit.SECONDS.sleep(3);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("返回 zhang");
                return "zhang";
            }
        }).runAfterBothAsync(CompletableFuture.supplyAsync(new Supplier<String>() {
            @Override
            public String get() {
                try {
                    TimeUnit.SECONDS.sleep(5);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("返回 phil");
                return "phil";
            }
        }), new Runnable() {
            @Override
            public void run() {
                System.out.println("开始 run");
            }
        });
    }



代码运行结果输出:

07-02 14:06:59.016 23450-23450/zhangphil.test I/System.out: 开始...
07-02 14:07:02.020 23450-23493/zhangphil.test I/System.out: 返回 zhang
07-02 14:07:04.021 23450-23494/zhangphil.test I/System.out: 返回 phil
    开始 run


线程返回“zhang”和"phil"后, 开始运行线程Runnable里面的线程体。注意返回“zhang”和“phil”的线程是同时执行的。

相关文章
|
9月前
|
Java 开发者 微服务
Spring Cloud OpenFeign详解与实践
总结起来说,Spring Cloud OpenFeign提供了一种简单易懂且高效的方式去实现微服务之间通信.它隐藏了许多复杂性,并且允许开发者以声明式方式编写HTTP客户端代码.如果你正在开发基于Spring Cloud 的微服务架构系统,Spring Cloud Open Feign是一个非常好用且强大工具.
662 33
|
前端开发 PHP
ThinkPHP6之Excel解析
ThinkPHP6之Excel解析
237 0
|
搜索推荐 数据可视化 数据挖掘
百货商场用户画像描绘与价值分析(下)
百货商场用户画像描绘与价值分析(下)
473 1
|
人工智能 自动驾驶 搜索推荐
AI技术在现代生活中的应用与影响
本文将探讨AI技术在现代生活中的广泛应用,以及它对人们生活方式的影响。我们将从智能家居、自动驾驶汽车、医疗健康、教育等领域出发,分析AI技术如何改变人们的生活。同时,我们也将讨论AI技术可能带来的问题和挑战,以及如何应对这些问题。
|
开发者
新产品开发流程 | 学习笔记
快速学习新产品开发流程。
1509 0
新产品开发流程 | 学习笔记
|
存储 弹性计算 网络协议
阿里云高性能计算HPC优化实例商业化发布详解
基于云的高性能计算(Cloud HPC),与传统HPC相比更加灵活、高效。
|
程序员 定位技术 iOS开发
iOS开发:解决App进入后台,倒计时(定时器)不能正常计时的问题
在iOS开发过程中,尤其是发送短信验证码的需求是非常常见的需求,这就涉及到倒计时的使用,但是如果正在倒计时操作,app进入后台运行,倒计时会出现什么效果呢?那么本篇博文就来了解一下相关知识吧。
1688 1
iOS开发:解决App进入后台,倒计时(定时器)不能正常计时的问题
如何快速体验通义千问全系列模型能力
体验通义千问全系列模型能力,需在阿里云开通百炼服务。访问阿里云百炼控制台的“模型广场”,可选择包括通义系列在内的多种模型。按照指南进行训练、部署和评测。详情参阅官方文档。
|
NoSQL 关系型数据库 MySQL
[AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别
[AIGC] 对比MySQL全文索引,RedisSearch,和Elasticsearch的详细区别
631 1