如何在ExecutorService上停止所有提交的任务

时间:2012-06-03 14:33:45

标签: java multithreading

我想在ExecutorService上停止所有提交的任务,但我找不到一个方法来执行它。有什么建议吗?

3 个答案:

答案 0 :(得分:3)

答案 1 :(得分:1)

例如,var pool是一个ExecutorService。

//start a task 
pool.execute(task);

//
try {
    pool.shutdown();
    if(!pool.awaitTermination(awaitTime, TimeUnit.MILLISECONDS)){
        pool.shutdownNow();
    }
} catch (InterruptedException e) {
    pool.shutdownNow();
}

答案 2 :(得分:0)

只有当任务本身设计为响应外部信号(例如运行任务的线程中断或某些其他应用程序设计的标志)时,才能对提交到ExecutorService的任何任务进行确定性关闭。 。 ExecutorService本身只会为您提供这些信号(当您调用其shutdown()shutdownNow()方法时),并通知所有正在运行的任务。如果您希望能够关闭所有任务(包括已经运行但尚未完成的任务),那么请设计这些任务以获得取消策略。