繁体   English   中英

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

[英]how can i stop all submitted tasks on ExecutorService

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

例如,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();
}

只有当任务本身被设计为响应外部信号(例如运行任务的线程上的Interruption或某些其他应用程序设计的标志)时,才可以确定性地关闭提交给ExecutorService任何任务。 ExecutorService本身仅能帮助您(在您调用其shutdown()shutdownNow()方法时)会为您引发这些信号,并通知所有正在运行的任务。 如果您希望能够关闭所有任务(包括已经在运行但尚未完成的任务),请设计这些任务以具有取消策略。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM