在不关闭ExecutorService / ThreadPoolExecutor的情况下中断ExecutorService / ThreadPoolExecutor中的所有任务

时间:2015-11-29 13:56:59

标签: multithreading concurrency java-8 java.util.concurrent

有没有办法打断Executor中的所有活动任务? 我不相信我必须先存储所有以前提交的任务才能触发这样的常见操作。如果我使用的是CompletableFutures,它对Future计算代码没有控制权,那么当我只是告诉执行者为我做这件事时,我真的需要弄乱complete()同步吗?

我寻找像asynch一样的东西:

 //Easier than keeping a collection of tasks by both methods 
 //in a global var, which needs to parse which ones are 
 //already executed, during execution or whatever

 public void start(MyTask task){
    executorService.submit(task);
 }

 public void stop(){
   executorService.cancelAnyTask();  //This or
   executorService.interruptAnyActiveTask(); //Even this
 }

编辑:我想中断(或者取消)活动任务,我不介意排队的(真的不介意排队是否被丢弃)。我只是想在给定的离散时间内清除执行程序的工作,即使1 ms后它再次开始执行排队的任务。

0 个答案:

没有答案