我正在开发一些应该在特定时间开始的调度,它应该在一段时间后停止..在延迟后开始我可以使用timer和timerTask类。但是停止我没有太多的想法。如何在经过一段时间后停止计时器。
答案 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()方法,但我记得在某个地方读过它是不推荐的