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()); } }
次のように図の実行結果は以下のとおりです。