CompletableFuture

CompletableFuture #

基本概念 #

  • Runnable:无返回值的函数。
  • Supplier:有返回值的函数。
  • Consumer:接受入参的函数。
  • Function:接受入参且有返回值的函数。
  • CompletionStage: CompletableFuture的父类。

基本使用 #

API列表

CompletableFuture<Void> future1 = CompletableFuture.runAsync(runnable, executor);
CompletableFuture<Boolean> future2 = CompletableFuture.supplyAsync(() -> 1)
    .thenApply(integer -> integer == 1);
Boolean future2Res = future2.get();

以下常用方法中凡是方法名以Async作为后缀的都是异步方法:

  • runAsync(runnable, executor) :在线程池中执行Runnable。
  • supplyAsync(supplier, executor) :在线程池中执行Supplier。
  • thenRun(runnable):在当前线程中执行Runnable。
  • thenAccept(consumer):在当前线程中执行Consumer。
  • thenApply(function):在当前线程中执行Function。
  • exceptionally(function):异常处理。
  • thenCompose(function, stage):组合两个Future。
  • CompletableFuture.allOf(stage..):组合多个Future。
  • get():阻塞当前线程获得结果。

常见使用方法: 通过supplyAsync()提供返回值;通过thenApply()或thenAccept()处理返回值;通过exceptionally()处理异常。