2021SC@SDUSC
概述
我们先来看一下官网对promise的介绍:
Promises are primary building blocks in the ActiveJ async programming model which can be compared to Java Futures. promise represents the result of an operation that hasn't been completed yet.
promise是ActiveJ异步编程模型的主要构件,可以与Java Futures相比较。promise代表一个尚未完成的操作的结果。
那么,什么是Futures?Future是在JDK5中新加入的用来获取异步执行结果。从功能上来讲,Future表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功或失败后作出相应的操作。后因其局限,在JDK8中补充了它的新特性CompletableFuture与CompletionStage。
特点
- 与Java Futures不同, Promises ,被设计为在一个单一的事件循环线程中工作。
- Promises 是非常轻量级的
- 没有多线程的开销
- 每秒可处理数百万次呼叫
- 用于组合多个promise的强大的API
源码目录结构
分析
Promise<Integer> firstNumber = Promise.of(10);
Promise.of("Hello World");
Promise.ofException(new Exception("Something went wrong") );
其中:
- of(T value) - 创建一个成功完成的promise。
static <T> @NotNull Promise<T> of(@Nullable T value) {
return value != null ? new CompleteResultPromise<>(value) : CompleteNullPromise.instance();
}
- ofException(Exception e) - 创建一个异常完成的承诺
static <T> @NotNull Promise<T> ofException(@NotNull Exception e) {
return new CompleteExceptionallyPromise<>(e);
}
此外,我们还有一种快捷创建 Promise.of(null) 的方式。
- complete() - 创建一个成功完成的
Promise<Void>,
是Promise.of(null)
的快捷方式。
static @NotNull Promise<Void> complete() {
return (Promise<Void>) CompleteNullPromise.INSTANCE;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。