【问题标题】:how to schedule a task with start time and end time using java Timer and TimerTask如何使用 java Timer 和 TimerTask 安排具有开始时间和结束时间的任务
【发布时间】:2014-04-19 17:56:49
【问题描述】:

嗨,我正在开发一些计划,它应该在特定时间开始,并且应该在一段时间后停止。在延迟后开始,我可以使用 timer 和 timerTask 类来做。但是停止我没有太多想法。如何在经过一段时间后停止计时器。

【问题讨论】:

  • 您的代码在特定时间触发后会做什么?它是一个不间断的连续过程吗?
  • 不,它不是一个不间断的过程。它应该根据开始时间和停止时间只安排一次作业。
  • 如果它是一个不间断的过程(例如在预定时间发送电子邮件),那么它会在完成该工作后自动停止。您的意思是要停止调度程序本身吗?
  • @jay :我正在做跟踪应用程序,我的调度程序必须在特定时间安排跟踪线程并在结束时间停止。所以只有我想在经过的时间后停止调度程序。

标签: java timer scheduled-tasks scheduling


【解决方案1】:

如果你在线程中运行你的任务,你可以保留对任务的Future对象的引用并设置一个超时。类似的东西:

Future<?> future = executor.submit(new customTask()));
try {
    future .get(timeout, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
    // The timeout exception is thrown when the get times out. Handle your stop logic here
}

您可能希望分别处理 InterruptedException、ExecutionException 和 TimeoutException。

当你的停止计时器到期时,你也可以在 Future 对象上调用 .cancel() 方法,但我记得在某处读过它不推荐

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多