JUC异步回调CompletableFuture用法

代码如下:

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

    }
}

结果如下:

原文地址:https://www.cnblogs.com/liuyi13535496566/p/15042228.html