如何使用java Timer和TimerTask计划具有开始时间和结束时间的任务

时间:2014-03-14 12:31:30

标签: java timer scheduled-tasks scheduling

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

1 个答案:

答案 0 :(得分:3)

如果在线程中运行任务,则可以保留对任务的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()方法,但我记得在某个地方读过它是不推荐的