2012-04-11 9 views

答えて

1

私はshutdownNow()のAPIドキュメントごととしてあなたは、むしろshutdown()よりshutdownNow()を呼び出しているので、isTerminated()は常にtrueを返すされている疑いがある:

...典型的な実装では、スレッドを経由してキャンセルします。

したがって、タスクがすべて割り込みの試行に即座に応答してすぐに完了するように聞こえます。

0

isTerminatedは、shutdownまたはshutdownNowが最初に呼び出された場合を除き、決して真ではありません。だから、タスクが成功したかどうかだけではなく、タスクが終了したかどうかを示します。 AtomicBooleanのようなフラグをつけて、正常に完了する直前にその状態を切り替えることができます。この方法では、ExecutorServiceのメソッドを使用して、タスクが終了したかどうかをチェックし、成功したかどうかを確認するフラグをチェックします。

関連する問題