【问题标题】:Restarting cancelled tasks in ScheduledThreadPoolExecutor在 ScheduledThreadPoolExecutor 中重新启动已取消的任务
【发布时间】:2026-01-30 09:10:01
【问题描述】:

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

}

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        最近更新 更多