2016-06-17 24 views

答えて

2

DeferredResultは、結果を生成するためのCallableの代替品です。追加のデータ構造を必要とせずに後で一部のデータにアクセスする必要がある場合に備えて、DeferredResultを拡張して追加のデータまたはビヘイビアを関連付けることもできます。しかし、それはそれについてです。 ListenableFuture futureは、コールバックを非同期タスクに追加する必要がある場合に便利です。 GuavaのListenableFutureは、実際には、私がSpringのListenableFutureには見えない合成を許可します。 あなたはSpringでもサポートされているCompletableFutureを使いたいと思っています。 あなたはこれをチェック、非常に簡単に先物を構成することができます。http://www.deadcoderising.com/java8-writing-asynchronous-code-with-completablefuture/

1

彼らは最初の2番目の適応ListenableFutureReturnValueHandlerのおかげで、お互いに概念的に類似していると、コントローラのメソッドの結果として、交換可能に使用することができます。

しかし、2つの異なる世界から来DeferredResultクラスとListenableFutureインタフェースの両方:バージョン3.2で追加されorg.springframework.web.context.request.asyncパッケージから

  1. まず。
  2. 第2よりorg.springframework.util.concurrent 4.0以降で利用可能なパッケージ。

さらに、それらは異なるニーズに加えられました。最初のものはコントローラの結果を非同期的に提供するための基本と完全な機能を提供しますが、2つ目は、例えば、ExecutorServiceフレームワーク(ListenableFutureTask参照)のような既存のクラス/フレームワークと実装を橋渡しすることを可能にします。

だから、一番下の行は、あなたがExecutorService様フレームワークを使用したい時にあなたがあなた自身のまたはListenableFutureにさらに処理を実装することが十分だときDeferredResultクラスを使用し、です。

関連する問題