CompletableFuture的使用

本文深入解析CompletableFuture类,探讨其作为Future补充类的功能,包括显式完成、触发依赖函数、实现CompletionStage接口策略及Future特性。文章揭示了多线程环境下CompletableFuture的操作限制,以及其在异步编程中如何运用ForkJoinPool执行任务。
CompletableFuture类的源码描述:
	一个可以显式完成(设置其值和状态),可以用作CompletionStage,支持在其完成时触发依赖函数和操作的CompletableFuture。(看命令就知道是Future的补充类)
	当两个或更多线程尝试去调用一个CompletableFuture实例的#complete,#completeExceptionally,#cancel方法时,只会有一个会成功。
此外,除了这些和与直接操纵状态和结果相关的方法外,CompletableFuture根据以下策略实现了CompletionStage接口:                   
	1.所有没有指定Executor的异步方法都是使用ForkJoinPool#commonPool()来执行。除非它不支持至少两级的并行级别,在种情况下,会创建一个新线程
来运行每个任务)2.为了简化监控、调试和跟踪,所有生成的异步任务是标记接口AsynchronousCompletionTask的实例。
	3.CompletionStage被实现的方法都是独立于其他public方法的。因此,一个方法的行为不会受到其他子类的影响。
CompletableFuture同样根据以下策略实现了Future:
	1.因为(不像{@link FutureTask}),这个类不能直接控制计算的完成,取消被视为另一种特殊形式的完成。#cancel方法和completeExceptionally
(new CancellationException())是一样的作用。#isCompletedExceptionally用来判断CompletableFuture是否是以任何
特殊的方式完成的。
	2.在以CompletionException异常完成的情况下,#get()和#get(long, TimeUnit)会抛出一个ExecutionException异常。为了可以在
大多数情况下简单使用,CompletableFuture定义了#join()和在这些情况下直接抛出CompletionException异常的#getNow方法。
使用:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值