Future
Future接口在Java 5中被引入,设计初衷是对将来某个时刻会发生的结果进行建模。它建模了一种异步计算,返回一个执行运算结果的引用,当运算结束后,这个引用被返回给调用方。
CompletableFuture
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
public class CompletableFutureTest {
public static void main(String[] args) throws ExecutionException, InterruptedException {
//无返回值的异步调用
CompletableFuture<Void> voidCompletableFuture = CompletableFuture.runAsync(
() -> {try{
TimeUnit.SECONDS.sleep(2);
}catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("end");
});
System.out.println("finish then");
voidCompletableFuture.get();
// 有返回值的异步调用
CompletableFuture<String> uCompletableFuture = CompletableFuture.supplyAsync(() -> {
try{
TimeUnit.SECONDS.sleep(2);
// int i=1/0;
}catch (InterruptedException e) {
e.printStackTrace();
}
return "2.end";
});
System.out.println("2.start");
System.out.println(uCompletableFuture.get());
uCompletableFuture.whenComplete((u,t)->{
System.out.println(u);//正常的返回结果
System.out.println(t);// 错误信息
});
}
}