CompletableFuture方法はJava8の新機能を詳細

  CompletableFutureは、非同期操作を作成するために、4つの静的メソッドを提供します。

  次のように静的メソッドは、次のとおりです。

  CompletableFuture runAsync(Runnableを実行可能)。

  CompletableFuture runAsync(Runnableを実行可能な、執行エグゼキュータ)。

  CompletableFuture supplyAsync(サプライヤーサプライヤー)。

  CompletableFuture supplyAsync(サプライヤーサプライヤー、エグゼキュータ)。

  両者の間にrunAsyncとsupplyAsync違い:

  runAsyncメソッドは、戻り値をサポートしていません。

  supplyAsyncは、戻り値をサポートすることができます。

  エグゼキュータの説明:

  方法はエグゼキュータのパラメータが存在する場合は、タスクを実行するためにexecutorを使用します。

  そうでない場合は、デフォルトの非同期タスクの実行スレッドプールなどの一般的なForkJoinPool.commonPool()を使用します。

  Aの例

  公共の静的な無効メイン(文字列[]引数)がExecutionException、例外:InterruptedExceptionをスロー{

  CompletableFutureの未来= CompletableFuture.runAsync(() - >のSystem.out.println( "Hello Worldの"));

  System.out.println(future.get())。

  }

  結果:

  こんにちは世界

  ヌル

  例二

  公共の静的な無効メイン(文字列[]引数)がExecutionException、例外:InterruptedExceptionをスロー{

  ExecutorServiceのエグゼキュータ= Executors.newCachedThreadPool()。

  CompletableFutureの未来= CompletableFuture.runAsync(() - >のSystem.out.println( "Hello World" の)、エグゼキュータ)。

  System.out.println(future.get())。

  } 病院の鄭州流れhttp://www.zyfuke.com/

  結果:

  こんにちは世界

  ヌル

  例三

  公共の静的な無効メイン(文字列[]引数)がExecutionException、例外:InterruptedExceptionをスロー{

  //現在のタイムスタンプを取得します。

  CompletableFutureの未来= CompletableFuture.supplyAsync(システム::にcurrentTimeMillis)。

  System.out.println(future.get())。

  }

  結果:

  1586245295714

  例四

  公共の静的な無効メイン(文字列[]引数)がExecutionException、例外:InterruptedExceptionをスロー{

  //現在のタイムスタンプを取得します。

  ExecutorServiceのエグゼキュータ= Executors.newCachedThreadPool()。

  CompletableFutureの未来= CompletableFuture.supplyAsync(システム::にcurrentTimeMillis、エグゼキュータ)。

  System.out.println(future.get())。

  }

  結果:

  1586245295714


おすすめ

転載: blog.51cto.com/14335413/2485738