3

我正在使用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);
  }

}

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

4

2 回答 2

3

一旦未来被取消,该任务就不能在以后的阶段复活。快速浏览一下javadoc 将解释Future 的合约。

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

于 2013-10-03T05:41:41.250 回答
2

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

于 2013-10-03T00:55:56.603 回答