代码如下:
//异步调用和同步调用 public class CompletableFutureDemo { public static void main(String[ ]args) throws Exception { //同步调用 CompletableFuture<Void> completableFuture1 = CompletableFuture.runAsync(() -> { System.out.println(Thread.currentThread().getName() + ": CompletableFuture1"); }); completableFuture1.get(); //异步调用 CompletableFuture<Integer> completableFuture2 = CompletableFuture.supplyAsync(() -> { System.out.println(Thread.currentThread().getName() + ": CompletableFuture2"); return 1024; }); completableFuture2.whenComplete((t,u) -> { System.out.println("-----t= "+ t); System.out.println("-----u= "+ u); }).get(); } }
结果如下:
如果有异常,观察t,u的值
//异步调用和同步调用 public class CompletableFutureDemo { public static void main(String[ ]args) throws Exception { //同步调用 CompletableFuture<Void> completableFuture1 = CompletableFuture.runAsync(() -> { System.out.println(Thread.currentThread().getName() + ": CompletableFuture1"); }); completableFuture1.get(); //异步调用 CompletableFuture<Integer> completableFuture2 = CompletableFuture.supplyAsync(() -> { System.out.println(Thread.currentThread().getName() + ": CompletableFuture2"); int i = 10/0; return 1024; }); completableFuture2.whenComplete((t,u) -> { System.out.println("-----t= "+ t); System.out.println("-----u= "+ u); }).get(); } }
结果如下: