CompletableFuture 介绍

CompletableFuture 实现了 CompletionStage 接口和 Future 接口,前者是对后者的一个扩展,增加了异步回调、流式处理、多个 Future 组合处理的能力,使 Java 在处理多任务的协同工作时更加顺畅便利。

使用示例

public class Test {
    public static void main(String[] args) throws Exception{
        CompletableFuture<Void> future=CompletableFuture.runAsync(new Runnable() {
            @Override
            public void run() {
                try {
                    System.out.println(Thread.currentThread().getName()+"没有返回值的异步任务。");
                    TimeUnit.SECONDS.sleep(2);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        future.get();

        CompletableFuture<String> future2=CompletableFuture.supplyAsync(new Supplier<String>(){
            @Override
            public String get() {
                try {
                    System.out.println(Thread.currentThread().getName()+"有返回值的异步任务。");
                    TimeUnit.SECONDS.sleep(2);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                return "OK";
            }
        }).exceptionally(e -> {
            e.printStackTrace();
            return "出异常了!";
        }).whenComplete((t,u)->{
            System.out.println("成功了!");
        });
        String result=future2.get();
        System.out.println("结果:"+result);
    }
}

结果:
ForkJoinPool.commonPool-worker-1没有返回值的异步任务。
ForkJoinPool.commonPool-worker-1有返回值的异步任务。
成功了!
结果:OK

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-05
  • 2021-09-09
  • 2021-11-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案