如果返回的ScheduledFuture
代表所有
的java.util.concurrent.ScheduledExecutorService::scheduleAtFixedRate method,
的Javadoc描述,我对我不清楚是否有计划的诉讼。
换句话说,我的预定操作将进行一些不确定的次数(直到我停止申请)。我可以通过保存此变量并取消该变量来随时停止其执行?
这个问题不仅是关于实际实施的(这是有趣的),还涉及对规范的正确理解(如果我想提供我自己的ScheduledExecutorService
的实施,该怎么办?)。
返回的ScheduledFuture
应表示正在进行的任务,包括其复发。
我们可以知道,通过从ScheduledExecutorService
的文档中读取以下代码段:
import static java.util.concurrent.TimeUnit.*;
class BeeperControl {
private final ScheduledExecutorService scheduler =
Executors.newScheduledThreadPool(1);
public void beepForAnHour() {
final Runnable beeper = new Runnable() {
public void run() { System.out.println("beep"); }
};
final ScheduledFuture<?> beeperHandle =
scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS);
scheduler.schedule(new Runnable() {
public void run() { beeperHandle.cancel(true); }
}, 60 * 60, SECONDS);
}
}
ScheduledFuture
用于在经过一个小时后取消任务。为此,ScheduledFuture
无法代表最初提交的任务,而是必须表示正在进行的重复任务。