对于以固定利率而安排的操作的所有执行,计划future表示相同的任务



如果返回的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无法代表最初提交的任务,而是必须表示正在进行的重复任务。

最新更新