Java 8 CompletableFuture与Netty Future

时间:2015-12-07 04:53:31

标签: java java-8 netty nonblocking completable-future

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

Netty文档提到

  

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

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

  1. 他们的异同是什么?
  2. 两者的性能特征有何不同?哪一个能够更好地扩展?
  3. 关于相似点/不同点,我能够提出以下建议:

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

    差异: CompletableFuture似乎有更丰富的界面来组合多个异步活动等。另一方面,Netty的io.netty.util.concurrent.Future允许将多个侦听器添加到同一个Future中,而且允许侦听器成为除去。

1 个答案:

答案 0 :(得分:1)

如果我们看整段(特别是第一句)

  

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

它基本上说的是,网络FutureCompletableFuture是相同的概念,但是在不同的时间由不同的人实施。
Netty创造了他们的未来,因为在Java中没有一个可用,并且他们不想从Guice这样的东西中引入一个。但是现在,java创建了一个,它可以使用 在段落的最后,他们基本上说netty API可能会在将来用Future取代CompletableFuture
就相似性/差异而言,它们只是future/promise模式的许多实现中的一种。当您使用netty api和netty特定内容时,请使用netty,否则请使用CompletableFuture