首先CompletableFuture得主要功能是异步执行 有区分有返回值和无返回值两种方法
// 无返回值方法
CompletableFuture<Void> noReturn = CompletableFuture.runAsync(() -> {
System.out.println("无返回值");
});
noReturn.get();
// 有返回值且异常捕获方法
CompletableFuture<Integer> integerCompletableFuture = CompletableFuture.supplyAsync(() -> {
List<Integer> list= Arrays.asList(1,2,4);
list.get(4);// 写个异常
return 1024;
});
integerCompletableFuture.whenComplete((t,u)->{
System.out.println("返回:"+t);
System.out.println("异常:"+u);
}).exceptionally( e->{
System.out.println("出异常了,捕获到异常:"+e.getMessage());
return 500;
}).get();
线程池使用
// 创建线程池
ExecutorService threadPool = new ThreadPoolExecutor(2,
2,
200,
TimeUnit.MILLISECONDS,
new LinkedBlockingQueue<Runnable>(),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy()
);
// 执行任务
threadPool.execute(() -> {
System.out.println("任务被执行,线程:" + Thread.currentThread().getName());
});