CompletionService による Future リストの待機の最適化
Future のリストを操作するときは、Future のリストの完了を効率的に待機したり、例外を処理したりすることが重要です。不必要な遅延を防ぎます。
Future のリストを返す次のメソッドがあるとします。
1 |
|
完了を待つか例外をキャッチするには、単純なアプローチは次のようになります。
1 2 3 4 5 6 7 8 9 10 11 |
|
ただし、このアプローチは、前の Future の例外に関係なく、各 Future を待ちます。
解決策は、CompletionService を使用して、Future が利用可能になったときに受け取ることです。例外が発生した場合は、他のタスクをキャンセルできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
このアプローチでは、タスクは実行者に送信され、完了したタスクは完了サービスを通じて受信されます。受信したタスクで例外が発生した場合、while ループは終了し、エグゼキューターの shutdownNow() メソッドを使用して残りのタスクをキャンセルできます。
以上がCompletionService を使用して、Future リストの待機を最適化し、例外を効率的に処理するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。