13

CompletableFutureJDK 8 中引入的与io.netty.util.concurrent.FutureNetty 提供的相比如何?

Netty 文档提到

JDK 8 添加了 CompletableFuture,它有些重叠 io.netty.util.concurrent.Future http://netty.io/wiki/using-as-a-generic-library.html

我试图得到答案的问题是:

  1. 它们的相同点和不同点是什么?
  2. 两者的性能特征有何不同?哪一个能够更好地扩展?

关于相似之处/不同之处,我已经能够提出以下几点:

相似之处: 基本相似之处在于与 Java Future 相比,两者都是非阻塞的。这两个类都有可用于向未来添加侦听器、内省任务的失败和成功并从任务中获取结果的方法。

区别: CompletableFuture似乎有一个更丰富的接口,用于组合多个异步活动等。io.netty.util.concurrent.Future另一方面,Netty 允许将多个侦听器添加到同一个 Future,此外还允许删除侦听器。

4

1 回答 1

5

如果我们看整个段落(尤其是第一句话)

Java 有时会通过采用包含 Netty 提供的结构的想法来取得进步。例如,JDK 8 添加了 CompletableFuture,它在某种程度上与 io.netty.util.concurrent.Future 重叠。在这种情况下,Netty 的构造为您提供了一个很好的迁移路径;考虑到未来的迁移,我们将努力更新 API。

它的基本意思是 nettyFutureCompletableFuture是相同的概念,但在不同的时间由不同的人实施。
Netty 创造了他们的未来,因为在 java 中没有一个可用的,而且他们不想将一个作为 Guice 之类的依赖项引入。但是现在,java已经创建了一个,并且可以使用。
在段落的末尾,他们基本上是在说 netty API 将来可能会被Future替换CompletableFuture
就相似之处/不同之处而言,它们都只是未来/承诺模式的众多实现之一。当你使用 netty api 和 netty 特定的东西时使用 netty one,否则使用CompletableFuture.

于 2017-04-11T19:22:34.980 回答