我想在ExecutorService上停止所有提交的任务,但我找不到一个方法来执行它。有什么建议吗?
答案 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()
方法时),并通知所有正在运行的任务。如果您希望能够关闭所有任务(包括已经运行但尚未完成的任务),那么请设计这些任务以获得取消策略。