概要
通过CompletableFuture
实现异步代码块功能
技术细节
功能一
无返回值的异步代码块
CompletableFuture.runAsync(Runnable)
CompletableFuture.runAsync(() -> {
// 异步任务
});
功能二
有返回值的异步代码块
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步任务
return "Hello World";
});
// 处理结果
// 方式一:阻塞等待结果
future.get();
// 方式二:超时等待结果
future.get(5, TimeUnit.SECONDS);
功能三
执行多个异步任务,获取最早的执行任务结果
// 任务一
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello World");
// 任务二
CompletableFuture<String> future2 = CompletableFuture.supplyAsync(() -> "Hello World");
// 合并任务
CompletableFuture<Object> anyOf = CompletableFuture.anyOf(future, future2);
// 获取结果
anyOf.get();
功能四
执行多个异步任务,并等待全部执行完成
// 任务一
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello World");
// 任务二
CompletableFuture<Integer> future2 = CompletableFuture.supplyAsync(() -> 0);
// 合并任务
CompletableFuture<Void> allOf = CompletableFuture.allOf(future, future2);
// 阻塞等待全部任务完成
allOf.get();
优势
可通过简单的方式实现对方法中的部分代码异步执行 可以通过lambda 快速实现接口