ExecutorService で送信されたすべてのタスクを停止したいのですが、それを行う方法が見つかりませんでした。助言がありますか ?
3 に答える
3
をご覧くださいExecutorService.shutdownNow
。
于 2012-06-03T14:36:13.937 に答える
1
たとえば、var プールは ExecutorService です。
//start a task
pool.execute(task);
//
try {
pool.shutdown();
if(!pool.awaitTermination(awaitTime, TimeUnit.MILLISECONDS)){
pool.shutdownNow();
}
} catch (InterruptedException e) {
pool.shutdownNow();
}
于 2012-06-03T14:42:40.157 に答える
0
サブミットされたタスクの決定論的シャットダウンはExecutorService
、タスク自体が外部信号 (タスクを実行しているスレッドの割り込み、またはフラグを設計した他のアプリケーションなど) に応答するように設計されている場合にのみ可能です。それ自体は、これらのシグナルを発生させ( andメソッドを呼び出すとき)、実行中のすべてのタスクに通知するのExecutorService
と同じくらい役立ちます。すべてのタスク (既に実行中で、まだ終了していないタスクを含む) をシャットダウンできるようにしたい場合は、これらのタスクにキャンセル ポリシーが設定されるように設計します。shutdown()
shutdownNow()
于 2012-06-03T15:21:01.753 に答える