CompletableFuture是什么
- CompletableFuture是Java8中提供的Future的扩展功能,简化异步编程的复杂性;
- 引入函数式编程,通过回调的方式处理计算结果,也提供了转换和组合的方法;
- 它实现了Future和CompletionStage接口;
- 借助CompletionStage的方法可以实现链式调用;
- 一个CompletetableFuture就代表了一个任务,可以用then,when等操作来防止阻塞和轮询isDone的现象出现;
- 它可能代表一个明确完成的Future,也有可能代表一个完成阶段( CompletionStage ),它支持在计算完成以后触发一些函数或执行某些动作;
创建方式
1、创建一个具有默认结果的 CompletableFuture,不经常使用;
2、supplyAsync表示创建带返回值的异步任务,相当于ExecutorService submit(Callable
3、runAsync表示创建无返回值的异步任务,相当于ExecutorService submit(Runnable task);
样例:
- public static void main(String[] args) {
- // runAsync的使用
- CompletableFuture
runFuture = CompletableFuture.runAsync(() -> System.out.println("Hello runAsync!")); -
- // supplyAsync的使用
- CompletableFuture
supplyFuture = CompletableFuture.supplyAsync(() -> { - System.out.println("Hello supplyAsync!");
- return "Hello World";
- });
-
- // runAsync的future没有返回值,输出null
- System.out.println("runAsync结果:" + runFuture.join());
- // supplyAsync的future,有返回值
- System.out.println("supplyAsync结果:" + supplyFuture.join());
- }
结果:
创建形式ÿ
文章知识点与官方知识档案匹配,可进一步学习相关知识
Java技能树Java异步任务Future与CompletableFuture148947 人正在系统学习中
评论记录:
回复评论: