kotlin异步
与期货/承诺(例如Reactor的Mono或Java的CompletableFuture)相比,介绍Kotlin协程
是否想直接进入代码? 去 这里 检查 一下 。
介绍
在阅读有关Kotlin的协程的同时,我认为这真的很有帮助
将其与其他异步编程技术进行比较,特别是
Java中广泛使用的Future / Promises方法。
尽管Kotlin文档非常好而且很全面,但我还是觉得缺少一个“真实世界”的例子。 这是试图填补这一空白的尝试。
不要期望全面了解协程如何工作,也不要期望Java的CompletableFuture
或Reactor的Mono
工作。
这个想法是要选择一个非常简单的虚构问题,然后加以实施
与不同的方法和库进行比较。 这是
该主题的介绍性材料。
现在,让我们讨论一下伪造的问题。
问题陈述
在您需要从一个地方获取数据,进行一些处理并将其发送到另一个地方的问题上,谁从来不需要解决? 这里的虚假问题基本上就是这个。
假设我们从事电子商务,并且希望从HTTP端点获取最新的订单ID,然后将此ID发送给另外两个端点:
- 向我们提供有关订单中物品的库存信息,以及;
- 给我们计算订单的交付成本。
然后,我们需要将所有合并的信息公开给其他消费者。
我们还假设获取最新顺序后的操作在处理上较慢,我们希望并行运行它们。
我们想要实现以下内容:
期货/承诺方式
对于未来/承诺方法,我们将使用两个非常流行的API /库来处理Java中的异步编程: CompletableFuture
和Mono
。
从JDK 1.8开始, CompletableFuture
在标准Java库中可用,并且在最新版本中进行了一些改进。 因为它是标准库的一部分,所以它是愿意支持非阻塞过程的Java库的默认选择,并且在标准库中的某些其他API中使用,例如