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