串行任务方法

thenRun & thenRunAsync (无返回值)

  • thenRun:使用主线程或者执行上一步任务的子线程,串行执行任务。无返回值。

  • thenRunAsync:串行执行任务,从公共的commonPool线程中获取一个子线程,执行任务。无返回值。

CompletableFuture<Void> future = CompletableFuture.runAsync(() -> {
    System.out.println("执行异步任务");
}).thenRun(() -> {
    System.out.println("执行异步任务完成后的回调");
});

thenAccept & thenAcceptAsync (无返回值)

  • thenAccept:使用主线程或者上一步任务的线程,串行执行任务。将上一步任务执行的结果作为当前任务方法的参数,执行指定的任务。无返回值。

  • thenAcceptAsync:串行执行任务,将上一步任务执行的结果作为当前任务方法执行时候的参数,然后从公共 commonPool 线程中获取一个子线程,执行任务,无返回值。

CompletableFuture<Void> future = CompletableFuture.supplyAsync(() -> {
    System.out.println("执行异步任务");
    return "异步任务返回值";
}).thenAccept((String s) -> {
    System.out.println("执行异步任务完成后的回调");
});

whenComplete & whenCompleteAsync (无返回值)

  • whenComplete:使用主线程或者上一步任务的线程,串行执行任务,将上一步任务执行的结果和异常作为当前任务方法的参数,执行任务。无返回值。

  • whenCompleteAsync:串行执行任务,将上一步任务执行的结果或异常作为当前任务方法的参数,然后从commonPool线程池中获取一个子线程,执行任务,无返回值。

thenApply & thenApplyAsync

  • thenApply:使用主线程或者上一步任务的线程,串行执行任务。将上一步任务的返回值作为当前任务方法的入参,执行任务,最终将执行结果返回。

  • thenApplyAsync:串行执行任务,将上一步任务执行的结果作为当前任务执行时的参数,然后从公共commonPool线程池中获取一个子线程,执行任务,并返回执行结果。

handle & handleAsync

  • handle:使用主线程或者执行上一步任务的线程,串行执行任务。将上一步任务的返回值和异常作为当前任务方法的参数,执行任务,并返回执行后的结果。

  • handleAsync:串行执行任务,将上一步任务的返回值和异常作为当前任务方法的参数,然后从公共commonPool 线程池中获取一个子线程,执行任务,并返回执行后的结果。

thenCompose & thenComposeAsync (返回新任务)

  • thenCompose:使用主线程或者上一步任务的线程,串行执行任务,按照顺序组合两个有依赖关系的任务,将上一步任务的返回值作为当前任务方法的参数,执行任务,并返回一个新任务。

  • thenComposeAsync:串行执行任务,按照顺序组合两个有依赖关系的任务,将上一步任务的返回值作为当前任务方法的参数,然后从公共的commonPool线程池中获取一个子线程,执行任务,并返回一个新任务。

最后更新于

这有帮助吗?