CompletableFutureは多くの方法があるFuturn、CompletionStage、およびCompletionStageを実現し、ゆっくりと探索する必要性、記録の1しかCompletableFutureレコードで発見します
ソースコードの一部を見てください:
パブリック クラス CompletableFuture <T> を実装将来<T>、CompletionStage <T> {...}
パブリック 静的 ボイドメイン(文字列[]引数){ 整数結果 = CompletableFuture.supplyAsync(() - > { int型 A = 1 ; のために(INTは I = 0、I <10; I ++ ){++ ; System.out.println(にThread.currentThread()のgetName()。 + "++" + ); してみてください{ Thread.sleep(1_000)。 } キャッチ(InterruptedExceptionある電子){ e.printStackTrace(); } } 返します。 })thenCombineAsync(CompletableFuture.supplyAsync(()。 - > { int型 B = 1 ; のために(INTは I = 0、I <10; I ++ ){ B ++ ; System.out.println(にThread.currentThread()のgetName()。 + "B ++" + B)。 してみてください{ Thread.sleep(1_000)。 } キャッチ(InterruptedExceptionある電子){ e.printStackTrace(); } } リターンB; })、(B) - > +のB).join(); System.out.println(結果)。
結果:
ForkJoinPool.commonPoolワーカー-1 A ++ 2 ForkJoinPool.commonPool -worker-2 B ++ 2 ForkJoinPool.commonPool -worker-1 A ++ 3 ForkJoinPool.commonPool -worker-2 B ++ 3 ForkJoinPool.commonPool -worker-2 B ++ 4 ForkJoinPool.commonPool -worker -1 A ++ 4 ForkJoinPool.commonPool -worker-1 A ++ 5 ForkJoinPool.commonPool -worker-2 B ++ 5 ForkJoinPool.commonPool -worker-1 A ++ 6 ForkJoinPool.commonPool -worker-2 B ++ 6 ForkJoinPool.commonPool -worker-1 ++ 7 ForkJoinPool .commonPool -worker-2 B ++ 7 ForkJoinPool.commonPool -worker-1 ++ 8 ForkJoinPool.commonPool -worker-2 B ++ 8 ForkJoinPool.commonPool -worker-1 A ++ 9 ForkJoinPool.commonPool -worker-2 B ++ 9 ForkJoinPool.commonPool -worker-2 B ++ 10 ForkJoinPool.commonPool -worker-1 ++ 10 ForkJoinPool.commonPool -worker -1 ++ 11 ForkJoinPool.commonPool -worker-2 B ++ 11 22
私たちは、非同期実行がある)2 supplyAsyncを(見ることができる、thenCombineAsyncは()の終了非同期に実行合併の結果であり、