Java 8 CompletableFuture vs Netty Future

JDK 8 中引入的内容与 Netty 提供的相比如何?CompletableFutureio.netty.util.concurrent.Future

Netty文档提到

JDK 8 增加了 CompletableFuture,这有点重叠 http://netty.io/wiki/using-as-a-generic-library.htmlio.netty.util.concurrent.Future

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

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

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

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

差异:似乎有一个更丰富的界面,例如编写多个异步活动等。另一方面,Netty允许将多个侦听器添加到同一个未来中,并且允许删除侦听器。CompletableFutureio.netty.util.concurrent.Future


答案 1

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

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

它基本上说的是,netty和是相同的概念,但在不同的时间由不同的人实施。
Netty创造了他们的未来,因为Java中没有一个可用的,他们不想从Guice这样的东西中拉入一个依赖。但是现在,java已经创建了一个,并且可以使用。
在段落的末尾,他们基本上是在说netty API将来可能会取代。
就相似性/差异而言,它们都只是未来/承诺模式的众多实现之一。当您使用netty api和netty特定的东西时,请使用netty,否则使用。FutureCompletableFutureFutureCompletableFutureCompletableFuture


答案 2

推荐