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方法只是传递异常
网友评论