异常感知及任务完成感知 [ 返回最终结果 ]
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService service = Executors.newFixedThreadPool(5);
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
log.info("future完成");
//int i = 10/0;
return 1;
}, service).thenApply((res) ->{
log.info("thenApply");
return res+2;
}).thenApply((res) ->{
return res+2;
}).exceptionally(throwable -> {
//[ 异常感知 ] Function
log.info("执行失败:{}",throwable.getMessage());
return 2;
}).whenComplete((integer, throwable) -> {
//[ 完成感知 ] BigConsumer
log.info("{}-执行完成", integer);
});
Integer integer1 = future.get();
System.err.println(integer1);
//thenCombine 合并两个任务
}
执行结果
任务合并 [ thenCombine ]
public static void main(String[] args) throws ExecutionException, InterruptedException {
ExecutorService service = Executors.newFixedThreadPool(5);
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
log.info("1");
return "1";
}, service).thenCombine(CompletableFuture.supplyAsync(() ->{
log.info("2");
return "2";
}),(f1,f2) ->{
log.info("1+2");
return "1和2都好了";
});
String integer1 = future.get();
System.err.println(integer1);
//thenCombine 合并两个任务
}
执行结果