CompletableFuture 的小demo

2019-01-25  本文已影响11人  简书徐小耳
  CompletableFuture completableFuture = new CompletableFuture();
        System.out.println("当前线程" + Thread.currentThread().getName());
        CompletableFuture<Object> completableFuture1 = completableFuture.whenComplete((resout, excep) -> {

            System.out.println("异步回调的线程" + Thread.currentThread().getName());

        }).thenCompose((lastCompleteFutureResult) -> {
            System.out.println(3213);
            CompletableFuture c = new CompletableFuture();
            return 2;
        });
        completableFuture.complete("3321");
        completableFuture.complete(new RuntimeException());
        completableFuture1.complete(5);
        System.out.println("第二个compeleteFutrue" + completableFuture1.get());
        System.out.println("执行结束");
    CompletableFuture简单教学
    
    1.whenComplete代表我们设置了completableFuture的complete方法(每次只能传递结果或者异常)
    2.如果还设置了thenCompose,其会等上一个future结束,然后还能获取到上一个结果进行处理,这边有一个注意的地方就是我门使用complete 最终会执行thenCompose
    而如果我们是设置的completeExceptionally则不会执行
    3.如果我们结果是exception 我们get的时候会抛出异常
    4.whenCompleteAsyn 还可以异步回调,即不是使用我们执行线程回调,也可以指定特定的执行器回调
            5.      completableFuture.cancel(true); 也是类似complete方法只是传递异常
上一篇下一篇

猜你喜欢

热点阅读