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();

    }
}

结果如下:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章