あなたは、App Engineの中で「未来」とは何をするために使うのでしょうか?

StackOverflow https://stackoverflow.com/questions/2360492

  •  23-09-2019
  •  | 
  •  

質問

ドキュメントでに、FutureWrapperのは次のように定義されています:

  

FutureWrapperのは、単純な未来であります   親の未来をラップします。

将来何、なぜあなたはそれをラップする必要があるだろうとあなたはApp Engineの中でそれを使用する際に?

役に立ちましたか?

解決

これは java.util.concurrent.Future<V> のです。リンクJavadocはかなり明確であり、例が含まれています。怠け者のために、ここにコピー - ペーストです。

  

A Future ANの結果を表します   非同期計算。方法があります   計算かどうかを確認するために提供   そのために待機するように、完全です   結果を取得するために完了し、   計算の。結果缶   唯一の方法getを使用して取得すること   計算が完了したとき、   必要であれば、それはあるまでブロック   準備が整いました。キャンセルがで行われます   メソッドをキャンセルします。さらなる方法   タスクかどうかを判断するために設けられています   正常に完了またはキャンセルされました。   計算が完了すると、   計算はキャンセルできません。もし   あなたはのためFutureを使用したいです   cancellabilityのためではなく、提供   使用可能な結果は、あなたは型を宣言することができます   フォームFuture<?>とリターンnullの   基本となるタスクの結果としてます。

     

サンプル使用する(注:以下のもの   クラスはすべて作らアップされている。)

 interface ArchiveSearcher { String search(String target); }
 class App {
   ExecutorService executor = ...
   ArchiveSearcher searcher = ...
   void showSearch(final String target)
       throws InterruptedException {
     Future<String> future
       = executor.submit(new Callable<String>() {
         public String call() {
             return searcher.search(target);
         }});
     displayOtherThings(); // do other things while searching
     try {
       displayText(future.get()); // use future
     } catch (ExecutionException ex) { cleanup(); return; }
   }
 }
     

FutureTask のクラスあります   そのFutureの実装   道具はRunnable、とそうかもしれ   Executorによって実行されます。例えば、   提出して上記構成   置き換えることができます:

 FutureTask<String> future =
   new FutureTask<String>(new Callable<String>() {
     public String call() {
       return searcher.search(target);
   }});
 executor.execute(future);  
     

メモリー整合性効果:アクション   非同期計算で撮影しました   起こる-前にアクション   別の対応するFuture.get()   糸ます。

FutureWrapperは、任意の親Futureのためだけデコレータです。

scroll top