実行後に ExecutorService で作成されたすべてのスレッドをシャットダウンする方法
executor.awaitTermination(1, TimeUnit.DAYS);
終わった?
これは、スレッドが動作できる最大時間です。場合によっては、いずれかのスレッドが現在のタスクを終了しない場合は、シャットダウンしてから再度開始します。
実行後に ExecutorService で作成されたすべてのスレッドをシャットダウンする方法
executor.awaitTermination(1, TimeUnit.DAYS);
終わった?
これは、スレッドが動作できる最大時間です。場合によっては、いずれかのスレッドが現在のタスクを終了しない場合は、シャットダウンしてから再度開始します。
true を返す場合awaitTermination
、すべてのスレッドがシャットダウンされています。
false を返す場合awaitTermination
、一部のスレッドは明らかに割り込みに応答していません*。Java プロセスを終了する以外に、できることはあまりありません...
*スレッドによって実行されるタスクが自分のものである場合は、スレッドが中断に応答してすぐに終了し、すぐawaitTermination
に戻ることを確認してください。
System.exit(1) を呼び出して、アプリケーションを停止できます。終了したくない場合は、Thread.interrupt に適切に反応するようにタスクを設計する必要があります。他に方法はありません。