JDK8 --- Future异步编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangguosb/article/details/86609697

Future演变史

在这里插入图片描述

  • JDK5正式提出Future特性支持异步编程,但只能算是半异步,因为需要通过阻塞或轮询的方式获取结果;
  • Netty/Guava等众多三方库对Future功能进行增强,提供注册回调函数、主动完成等功能;
  • JDK8借鉴各家所长,正式推出了官方版的CompletableFuture,自此Java有了内置的异步编程模型;

CompletableFuture介绍

异步执行

//异步执行,无返回值,使用ForkJoinPool
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)

完成异步执行

//完成异步执行,设置返回结果为value
public boolean complete(T value)	
//完成异步执行,设置异常为指定异常
public boolean completeExceptionally(Throwable ex)

参考:

  1. Guava ListenableFuture到 JDK8 CompletableFuture对应关系:https://github.com/krka/java8-future-guide

猜你喜欢

转载自blog.csdn.net/yangguosb/article/details/86609697