0

我有一个方法将在连续间隔后重复调用。我用过public void schedule(TimerTask task, Date firstTime, long period)。如何在特定时间后停止调用此调度方法。

现在我不知道如何停止这种方法。

任何帮助将不胜感激。

4

3 回答 3

4

你可以安排取消。例如,使用 ScheduledExecutor,它可能如下所示:

    ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
    Runnable yourRecurrentTask = ...; //your recurrent task
    //run every seconds
    final ScheduledFuture<?> future = scheduler.
            scheduleAtFixedRate(yourRecurrentTask, 0, 1, TimeUnit.SECONDS);
    Runnable cancelTask = new Runnable() {
        @Override
        public void run() {
            future.cancel(true);
        }
    };
    //cancel the reccurent task in 15 seconds
    scheduler.schedule(cancelTask, 15, TimeUnit.SECONDS);
于 2012-11-30T10:20:55.027 回答
0

你不能在给定时间后停止计时器吗?您可以使用另一个计时器,它只会触发一次并停止另一个计时器。

于 2012-11-30T10:19:15.387 回答
0

安排另一个任务,该任务包含对您现有的引用TimerTask并调用cancel它。您应该将此任务安排为一次性计划,不得重复。

于 2012-11-30T10:19:58.163 回答