ActiveJ框架学习——Async I/O之promise

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

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;
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值