Skip to content
DAILY QUOTE

“ ”

Future 设计的初衷: 对将来的某个事件的结果进行建模

java
package com.mystpet.yibuhuijiao;  
  
import java.util.concurrent.CompletableFuture;  
import java.util.concurrent.ExecutionException;  
import java.util.concurrent.TimeUnit;  
  
public class Demo01 {  
    public static void main(String[] args) throws ExecutionException, InterruptedException {  
        // 没有返回值的 runAsync 异步回调  
//        CompletableFuture<Void> completableFuture=CompletableFuture.runAsync(()->{  
//            // 模拟耗时操作,比如等2秒  
//            try{  
//                TimeUnit.SECONDS.sleep(2);  
//            } catch (InterruptedException e) {  
//                throw new RuntimeException(e);  
//            }  
//            System.out.println(Thread.currentThread().getName());  
//        });  
//  
//        System.out.println("1111");  
//        completableFuture.get(); // 获取执行结果  
  
  
        // 有返回值的 supplyAsync 异步回调  
        // ajax,成功和失败的回调  
        // 返回的是错误信息;  
        CompletableFuture<Integer> completableFuture= CompletableFuture.supplyAsync(() -> {  
            System.out.println(Thread.currentThread().getName()+"supplyAsync=>Interger");  
            int i=10/0;  
            return 1024;  
        });  
        System.out.println(completableFuture  
                .whenComplete((t,u)->{  //成不成功。都知道结果  
                    System.out.println("t="+t);  
                    System.out.println("u="+u);  
        }).exceptionally(e->{   //失败了该怎么做  
            System.out.println(e.getMessage());  //查看失败的错误信息  
            return 233;  
        })  
                .get());  
    }  
}