代码如下:

//异步调用和同步调用
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();

    }
}

结果如下:

 

posted on 2021-07-22 00:13  从精通到陌生  阅读(86)  评论(0编辑  收藏  举报