2

実行後に ExecutorService で作成されたすべてのスレッドをシャットダウンする方法

executor.awaitTermination(1, TimeUnit.DAYS);

終わった?

これは、スレッドが動作できる最大時間です。場合によっては、いずれかのスレッドが現在のタスクを終了しない場合は、シャットダウンしてから再度開始します。

4

3 に答える 3

2

true を返す場合awaitTermination、すべてのスレッドがシャットダウンされています。

false を返す場合awaitTermination、一部のスレッドは明らかに割り込みに応答していません*。Java プロセスを終了する以外に、できることはあまりありません...

*スレッドによって実行されるタスクが自分のものである場合は、スレッドが中断に応答してすぐに終了し、すぐawaitTerminationに戻ることを確認してください。

于 2013-08-27T11:43:52.633 に答える
0

System.exit(1) を呼び出して、アプリケーションを停止できます。終了したくない場合は、Thread.interrupt に適切に反応するようにタスクを設計する必要があります。他に方法はありません。

于 2013-08-27T11:42:49.737 に答える