暂停计时器

问题描述 投票:0回答:1

我的 Java 组件中有以下代码。每 5 秒计时器间隔调用一次 myLongRunningTask() 方法。 我需要能够暂停计时器,直到 myLongRunningTask() 方法执行完成。想知道这是否可能? 任何想法将不胜感激! (我尝试使用timer.cancel,但我相信它会丢弃任何当前计划的任务。)

谢谢。

    Timer timer = new Timer();
    TimerTask timer = new TimerTask() {
    
    @Override
    public void run() {
        myLongRunningTask();    
    }
  };
    
    timer.schedule(timer, 2 * 1000, 5 * 1000);
java timer timertask
1个回答
0
投票

Timer
TimerTask
类是遗留类,早在 Java 5 中就已被 Executors 框架取代。

Executor
子接口之一是
ScheduledExecutorService
。您可以使用它来安排重复任务。对于如何制定该时间表,您有两种选择:

  • 安排任务在重复时间跨度开始时开始。
  • 安排任务仅在上一次执行结束时开始的等待期之后启动。

您似乎想要:一次执行结束后,等待五秒钟,直到下一次执行开始。如果对您的问题的解释是正确的,您需要上面列出的第二种方法。

© www.soinside.com 2019 - 2024. All rights reserved.