在ScheduledThreadPoolExecutor中重新启动已取消的任务

时间:2013-10-02 22:03:57

标签: java multithreading threadpool java.util.concurrent futuretask

我正在使用ScheduledThreadPoolExecutor创建任务,并将Futures添加到我的ThreadFactory类中的列表中。

private static List<Future> futures;
........
ScheduledFuture sf = executor.scheduleAtFixedRate(obj, delayInMilliSec, repeatPeriod, TimeUnit.MILLISECONDS);

futures.add(sf);

现在,当我想要取消所有任务时,我会按照以下步骤进行操作

public void cancelAllTasks(){

  Iterator<Future> fi = futures.iterator();

  while(fi.hasNext()){

     fi.next().cancel(true);
  }

}

现在如何在以后重新启动这些任务?

2 个答案:

答案 0 :(得分:2)

AFAik你不能,你需要重新安排他们

答案 1 :(得分:2)

取消未来后,任务无法在稍后阶段重新启动。快速浏览javadoc will explain未来合约。

要重新启动任务,请使用执行程序再次安排它们。

相关问题