CompletableFuture java.util.concurrent.CompletableFuture#runAsyncの詳細ソース(java.lang.Runnableの)

  CompletableFuture#runAsyncメソッドは、ビジネス・ロジック・コードの多くを実行するときに、非同期プロシージャを実行せずに結果を返すために使用されますが、次のようにノーリターン結果は、この方法では、インターフェイスメソッドのソースコードのパフォーマンスを向上させるために、非同期実行を使用することはできません。

/ ** 
     *非同期的に完了し、新しいCompletableFuture返し
     で実行中のタスクによって*を{ @link ForkJoinPool#commonPool()}の後に
     *それは特定のアクションを実行します。
     * 
     * @param 実行可能な完了前に実行するアクション
     *返さCompletableFuture 
     *を@return 新しいCompletableFuture
      * / 
    パブリック 静的 CompletableFuture <ボイド> runAsync(Runnableを実行可能){
         返す(実行可能asyncPool、)asyncRunStageを。
    }

  ソースコードに示すように、タスク使用  ForkJoinPool#commonPool() スレッドプールの実装を、具体例を用いて、コンテンツのこの部分をフォロー書き込み以下の通りであります:

輸入java.util.concurrent.CompletableFuture。
輸入java.util.concurrent.ExecutionException。

/ ** 
 *测试类
 * @author yangchangkui
  * / 
パブリック クラスTestMy {
     公共 静的 ボイドメイン(文字列[]引数)がスローExecutionException、InterruptedExceptionあるが{
         長い =開始)(のSystem.currentTimeMillis。
        CompletableFutureは <ボイド> voidCompletableFuture = CompletableFuture.runAsync(() - > {
             しようと{
                 // 何か...やる 
                のThread.sleep(300); 
            } キャッチ(InterruptedExceptionあるE){ 
                e.printStackTrace(); 
            } 
        }); 
        // 決意が完了 
        するSystem.out.println( "処理1:" +(のSystem.currentTimeMillis() - 「)+開始isDone: "+ voidCompletableFuture.isDone()); 

        // 何かをする... 
        のThread.sleepが(300 );
         // 決意が完了した 
        のSystem.out.println(" 2を加工:「+(のSystem.currentTimeMillis() -start)+ "isDone:" + voidCompletableFuture.isDone()); 
    } 
}

 

次のように図の実行結果は以下のとおりです。

 

おすすめ

転載: www.cnblogs.com/yangchangkui/p/10959260.html