2015-12-07 23 views
8

JDK 8で導入されたCompletableFutureは、Nettyによって提供されたio.netty.util.concurrent.Futureとどのように比較されますか?Java 8 CompletableFuture対Netty Future

ネッティードキュメントが

JDK 8がやや io.netty.util.concurrent.Future http://netty.io/wiki/using-as-a-generic-library.html

と重なるCompletableFutureを追加することに言及し、私は答えを取得しようとしている質問は以下のとおりです。

  1. 彼らの類似点と相違点シス?
  2. 2つのパフォーマンス特性はどのように異なるでしょうか?どちらの方がスケールを改善できますか?類似点/相違点に関して

、私は次のように出てくることができました:

類似点: 基本的な類似性は、両方のは、Javaと比較して、非ブロックされているということで未来。どちらのクラスも、将来へのリスナーの追加、タスクの失敗と成功のイントロスペクション、およびタスクからの結果の取得に使用できるメソッドを持っています。

違い: CompletableFuture網状のio.netty.util.concurrent.Future一方、などの複数の非同期活動を構成するようなもののためのより豊かなインターフェースを持っていると思われる同じ未来に追加する複数のリスナーを可能にし、しかもリスナーにすることができます除去される。

+0

'CompletableFutureを呼び出すことができます。thenDoSomething() 'メソッドを複数回呼び出すことができます。これは、将来の他のフレームワークで複数のリスナーを追加するのに似ています。 –

+0

CompletableFutureにはNetty Futureのようなイベントループがありますか? – user1870400

+0

@ user1870400 'CompletableFuture'(および' CompletionStage'を実装している他のクラス)には、 'thenApply'や' thenApplyAsync'のようなメソッドがあり、異なる方法で動作します。 'thenApply'のようなメソッドは同じスレッド上で直ちに実行されますが、' thenApplyAsync'は 'Executor'を使って実行されます。デフォルトはイベントスチールプールですが、イベントループで実装されます。 – kag0

答えて

1

我々はその段落全体(特に最初の文)

を見れば、Javaが時々ネッティーが提供する構造 を包摂のアイデアを採用して進めます。たとえば、JDK 8では、CompletableFutureが追加されています。これは、 がio.netty.util.concurrent.Futureとやや重複しています。そのような場合、 のNettyの構造は、あなたへの良い移行パスを提供します。今後の移行を念頭に、 はAPIを徹底的に更新します。

何それは基本的に言っていることはネッティーFutureCompletableFutureは同じ概念であるということですが、異なる人々によって異なる時間に実施しました。
NettyはJavaで利用可能なものがなかったので未来を成し遂げました。そして、Guiceのようなものから依存関係を取り入れることを望んでいませんでした。しかし、今、Javaは、1つを作成し、それは使用可能です。
ここでは、基本的にnetty APIがFutureCompletableFutureに置き換えている可能性があると言っています。
類似点と相違点は、両方ともfuture/promiseパターンの多くの実装の1つです。 nettyのapiとnettyの特定のものを使用している場合はnettyを使用し、そうでない場合はCompletableFutureを使用してください。

関連する問題