CompletableFuture使用

、今後のご紹介    

将来
、このようなデータベースクエリデータに対する解決策があるならば、我々はなど、ファイルをアップロードし、アクションを実行する前に、この方法は、10分を行い、呼び出し側は、10分待つ必要があります。
これに基づき、呼び出し側はまず、完全に非同期技術を詰まらないように、そしてあなたは、他のことをし続けることができ、アクション、帰りの航空券の未来を行うことができます。そして、アクションは将来の結果に基づいて得ることができます。

どのように未来を実現するためには、それを所有しますか?

コード例:

1つの パッケージcom.cy.java8。
2  
3  インポートjava.util.concurrent.atomic.AtomicBoolean。
4  インポートjava.util.concurrent.atomic.AtomicReference。
5  
6  パブリック クラスFutureInAction {
 7      パブリック 静的 ボイドメイン(文字列[]引数)がスローInterruptedExceptionある{
 8          > -未来の<string>将来=呼び出し((){
 9              試み{
 10                  のThread.sleep(10000 ;)
 11                  リターン私は「を「終了;
 12              }キャッチ(InterruptedExceptionあるE){
 13                  リターン "エラー" 14              }
 15          });
16  
17          のSystem.out.println(future.get())。
18          のSystem.out.println(future.get())。
19          のSystem.out.println(future.get())。
20          // 行う他の事... 
21  
22          しばらく(!{future.isDone())
 23              のThread.sleep(10 )。
24          }
 25          のSystem.out.println(future.get())。
26      }
 27  
28      / **
29       *以前の方法をブロック
 30       *
 31である      * @param 呼び出し可能な
 32       * @param <T>
 33である      * @return 
34がある      * / 
35      プライベート 静的 <T> Tブロック(呼び出し可能<T> 呼び出し可能){
 36          リターンcallable.action( );
 37      }
 38は、 
39      / ** 
40       今後は非同期*
 41である      *
 42れる      * @param 呼び出し可能
 43である      * @param <T>
 44れます      *@return 
45       * / 
46      プライベート 静的 <T>将来<T>を呼び出す(呼び出し可能<T> 呼び出し可能){
 47          AtomicReference <T>結果= 新しい AtomicReference <> ();
48          AtomicBooleanは=終え、新しい AtomicBoolean();
49          スレッドt = 新しいスレッド(() - > {
 50              T値= callable.action();
 51              result.set(値);
 52              finished.set();
 53          })。
54         t.start();
55  
56          今後<T>将来= 新しい将来<T> (){
 57              @Override
 58              公共Tのget(){
 59                  リターンresult.get()。
60              }
 61  
62              @Override
 63              公共 ブールisDone(){
 64                  リターンfinished.get()。
65              }
 66          }。
67          リターン未来。
68      }
 69  
70      プライベート インターフェイスの未来<T>{
 71          Tのget();
72  
73          ブールisDone()。
74      }
 75  
76      プライベート インターフェース呼び出し可能<T> {
 77          Tアクション()。
78      }
 79 }

コンソール印刷:

ヌル
ヌル
ヌル
私は完成しています

 

II。  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

----

おすすめ

転載: www.cnblogs.com/tenWood/p/11610284.html