Java ExecutorService を効果的にシャットダウンする
リソース リークを防ぎ、システムの安定性を維持するには、Java で ExecutorService を適切に終了することが重要です。 shutdownNow() メソッドは保証された終了を提供しない可能性がありますが、効率的なシャットダウンを保証するための推奨アプローチがあります。
Oracle の API ドキュメントで推奨されている推奨方法には、次の 2 段階のプロセスが含まれます。
1.正常なシャットダウンの開始:
pool.shutdown() を呼び出して、新しいタスクの送信を無効にします。これにより、現在実行中のタスクは完了できますが、新しいタスクは受け付けられません。
2.終了または強制終了を待つ:
pool.awaitTermination(60, TimeUnit.SECONDS) を使用して、タスクが完了するのを待ちます。待機中のタスクに時間がかかりすぎる場合は、タイムアウトを延長するか、while (!pool.awaitTermination(60, TimeUnit.SECONDS)) によるループを使用できます。指定した時間内に終了に達しない場合は、pool.shutdownNow() を呼び出して残りのタスクを強制終了します。
追加のシャットダウン メソッド:
shutdown( ): 正常なシャットダウンを開始し、新しい送信を無効にする前に保留中のタスクを終了できるようにします。
shutdownNow(): すべてのタスクをただちに停止しようとし、未完了のタスクのリストを返します。
awaitTermination(): すべてのタスクが完了するか、タイムアウトが発生するか、スレッドが中断されるまでブロックします。
以上がリソース リークを防ぎ、安定性を維持するために Java ExecutorService を効果的にシャットダウンするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。