0

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

4

3 回答 3

3

看看ExecutorService.shutdownNow

于 2012-06-03T14:36:13.937 回答
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();
}
于 2012-06-03T14:42:40.157 回答
0

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

于 2012-06-03T15:21:01.753 回答