【JUC】CompletableFuture异步回调

异步调用代码演示

public class CompletableFutureDemo {
    
    

    public static void main(String[] args) throws ExecutionException, InterruptedException {
    
    
        //异步调用没有返回值
        CompletableFuture<Void> completableFuture1 = CompletableFuture.runAsync(()->{
    
    
            System.out.println(Thread.currentThread().getName() + "---completableFuture1111");
        });
        completableFuture1.get();

        //异步调用有返回值
        CompletableFuture<Integer> completableFuture2=  CompletableFuture.supplyAsync(() ->{
    
    
            System.out.println(Thread.currentThread().getName() + "---completableFuture2222");
//            int i = 1 / 0; //模拟异常
            try {
    
    
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
    
    
                e.printStackTrace();
            }
            return 666;
        });
        Integer integer = completableFuture2.whenComplete((t, u) -> {
    
    
            System.out.println("---t=" + t);  //返回值
            System.out.println("---u=" + u); //异常
        }).get();
        System.out.println("integer = " + integer);
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_44179010/article/details/123411799