CompletabeFuture

简介: CompletabeFuture

怎么获得一个CompletabeFuture

用核心的四个静态方法来创建一个异步任务,不推荐使用 new CompletableFuture() 来创建。如下图所示image.png

image.png

无返回结果调用

//无返回值
public class CompeltableFutureBuildDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
//        CompletableFuture CompletableFuture = new CompletableFuture();//不推荐
        CompletableFuture<Void> voidCompletableFuture = CompletableFuture.runAsync(() -> {
            System.out.println(Thread.currentThread().getName());
            try {
                TimeUnit.MILLISECONDS.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        System.out.println(voidCompletableFuture.get());
    }
}
结果:
ForkJoinPool.commonPool-worker-1(用默认线程池)
null
public class CompeltableFutureBuildDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
//        CompletableFuture CompletableFuture = new CompletableFuture();//不推荐
        ExecutorService threadPool = Executors.newFixedThreadPool(3);
        CompletableFuture<Void> voidCompletableFuture = CompletableFuture.runAsync(() -> {
            System.out.println(Thread.currentThread().getName());
            try {
                TimeUnit.MILLISECONDS.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        },threadPool);
        System.out.println(voidCompletableFuture.get());
    }
}
结果:
pool-1-thread-1(自己的线程池的名称)
null

有返回值的调用

public class CompeltableFutureBuildDemo {
    public static void main(String[] args) throws ExecutionException, InterruptedException {
//        CompletableFuture CompletableFuture = new CompletableFuture();//不推荐
        ExecutorService threadPool = Executors.newFixedThreadPool(3);
        CompletableFuture<String> voidCompletableFuture = CompletableFuture.supplyAsync(() -> {
            System.out.println(Thread.currentThread().getName());
            try {
                TimeUnit.MILLISECONDS.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "hello supplyAsync";
        },threadPool);
        System.out.println(voidCompletableFuture.get());
    }
}
运行结果:
pool-1-thread-1 (自己new的线程池)
hello supplyAsync (返回结果)


目录
相关文章
|
18天前
|
NoSQL Java MongoDB
程序员的50大MongoDB面试问题及答案
程序员的50大MongoDB面试问题及答案
|
12月前
|
关系型数据库 MySQL 数据安全/隐私保护
一文极速解决Navicat或者MySQL报错:1045-Access denied for user root@localhost(using password:YES)
一文极速解决Navicat或者MySQL报错:1045-Access denied for user root@localhost(using password:YES)
506 0
|
缓存 算法 Oracle
一文解读业务平台升级JDK11的适配之路
业务平台升级JDK11,基于两个出发点:一、jdk8于2019年1月停止维护,springboot2.1之后的版本已经兼容JDK11,springboot3.0完全放弃对JDK8的支持,未来属于更高版本的JDK;二、在试点国产化芯片的过程中,由于JDK8对Arm架构的优化不足,导致国产化芯片无法发挥自身的性能优势,为了更好的适配国产化,务必要求对JDK版本进行升级。基于上述两个出发点,业务平台于21年12月启动了对JDK版本升级的适配之路。这里回顾整个升级过程,对升级过程中的问题做一下记录
19259 13
一文解读业务平台升级JDK11的适配之路
|
Java Linux Shell
通过docker制作jar镜像并运行
通过docker制作jar镜像并运行
175 0
|
5天前
|
存储 安全 数据挖掘
性能30%↑|阿里云AnalyticDB*AMD EPYC,数据分析步入Next Level
第4代 AMD EPYC加持,云原生数仓AnalyticDB分析轻松提速。
性能30%↑|阿里云AnalyticDB*AMD EPYC,数据分析步入Next Level
|
3天前
|
人工智能 前端开发 JavaScript
阿里云安全类云产品,验证码使用时滑动验证流程及线上问题排查
阿里云验证码产品,使用业界先进的风控引擎结合“规则+AI”模型,有效区分真实用户和机器自动化脚本攻击,避免机器请求造成业务损失。主要适用于垃圾注册、刷库撞库,薅羊毛,短信被刷等风险场景。为您提供安全可靠的业务环境。本文为大家介绍验证码使用时滑动验证流程及验证不通过的问题排查。
64415 1
阿里云安全类云产品,验证码使用时滑动验证流程及线上问题排查
DeepRec Extension 打造稳定高效的分布式训练
DeepRec Extension 即 DeepRec 扩展,在 DeepRec 训练推理框架之上,围绕大规模稀疏模型分布式训练,我们从训练任务的视角提出了自动弹性训练,分布式容错等功能,进一步提升稀疏模型训练的整体效率,助力 DeepRec 引擎在稀疏场景中发挥更大的优势。
|
9天前
|
SQL 存储 关系型数据库
PolarDB-X CDC之"兼容MySQL,高于MySQL"
本文主要介绍一下PolarDB-X在CDC能力上那些高阶能力。
|
3天前
|
人工智能 并行计算 监控
性价比提升50%,阿里云HPC优化实例hpc8ae正式商业化
近日,全球领先的云计算厂商阿里云宣布正式开启最新HPC优化实例hpc8ae 的商业化发布,该实例依托阿里云自研的「飞天+CIPU」架构体系,搭载第四代 AMD EPYC处理器,专为高性能计算应用优化,特别适用于计算流体、有限元分析、多物理场模拟等仿真类应用,CAE 场景下的性价比最少提升 50%。
|
9天前
|
消息中间件 存储 监控

热门文章

最新文章