异步线程:CompletableFuture、@Async

区别:

1.CompletableFuture是java中提供的一个异步执行类,@Async是Spring提供的异步执行方法,当调用方法单独开启一个线程进行调用。

2.@Async通常指定一个方法使用的异步方法调用,而CompletableFuture可以一个方法体内对请求体进行排序组合成链式调用再返回

目录

1.CompletableFuture总体架构

2.计算完成时回调方法

 串行化与并行化

串行化案例:

 并行化案例:

 多任务组合


1.CompletableFuture总体架构

异步线程:CompletableFuture、@Async_第1张图片

Future 它是java5添加的接口,用来描述一个异步计算的结果,可以用isDone方法来计算是否完成,或者使用get阻塞往效用线程,直到计算返回结果,可以使用Cancel方法停止任务执行。

CompletableFuture实现Furure接口,不推荐使用get方式阻塞或者轮询方式获取结果。

CompletableFuture.supplyAsync(Runnable,Executor);//支持返回值

CompletableFutre.runAsync(Runnable,Executor);//不支持返回值

2.计算完成时回调方法

whenComplete(BigConsumer):同步完成正常处理结果

whenCompleteAsync(BigConsumer):异步完成处理结果

whenCompleteAysnc(BigConsumer,Executor):异步完成处理结果

exceptionally(Function):处理异常结果

异步线程:CompletableFuture、@Async_第2张图片

 串行化与并行化

串行化:程序从上到下执行的都是一个循序

并行化:从上到下执行顺序不一定

串行化案例:

thenApply方法(有返回值):当一个线程依赖另一个线程是,获取上一个任务返回结果,并返回当前任务的返回值

thenAccept方法(无返回值):接受任务的处理结果,并消费处理,无返回值结果。

thenRun方法(最后执行):只有上面的任务执行完成,就开始执行thenRun,只是处理完任务后执行thenRun的后续操作。

异步线程:CompletableFuture、@Async_第3张图片

 并行化案例:

异步线程:CompletableFuture、@Async_第4张图片

 多任务组合

allof().join();:等待所有任务完成之后返回

anyof():只有一个任务完成

你可能感兴趣的:(JAVA,java,前端,开发语言)