多线程之异步编排CompletableFuture

本文介绍了多线程的三种实现方式及线程池的重要性,详细解析了CompletableFuture的多种用法,包括线程异步编排、串行化、组合任务等高级应用。

多线程的实现方式有哪些
三种实现方案:
    1>继承Thread类的方法实现多线程
    2>实现Runnable接口的方式实现多线程
    3>利用Callable和Funture接口的方式实现多线程

1.2不能得到返回值,3可以获取返回值

三种方式都不可以控制资源

在项目代码中以上三种方式都不可取,需要使用线程池(将所有的多线程异步任务都交给线程池执行)确保系统的稳定运行

开发中为什么使用线程池

认识CompletableFuture

1.创建异步对象


public static CompletableFuture<Void> runAsync(Runnable runnable);
public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor);

public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier);
public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier, Executor executor);

1.run开头的方法都是没有返回值的,supply的方法都是可以获取返回结果的

2.使用CompletableFuture异步编排大多方法都会有一个重载方法,会多出一个executor参数,用来传来自定义的线程池,如果不传就会使用默认的线程池。

CompletableFuture可用于线程异步编排,使原本串行执行的代码,变为并行执行,提高代码执行速度

简单使用:

CompletableFuture.whenComplete():用于接收带有返回值的CompletableFuture对象,无法修改返回值。

CompletableFuture.exceptionally():用于处理异常,只要异步线程中有抛出异常,则进入该方法,修改返回值。

CompletableFuture.handle():用于处理返回结果,可以接收返回值和异常,可以对返回值进行修改。

无返回值

有返回值 方法计算成功时回调 出现异常抓获并且给出默认值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值