2

我正在创建ScheduledThreadPoolExecutor的任务,并在我的ThreadFactory类中将下列代码添加到列表中。在ScheduledThreadPoolExecutor中重新启动取消的任务

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); 
    } 

} 

现在我该如何重新启动这些任务在以后的时间点?

回答

1

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

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

2

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

相关问题