Вопрос

Hi im developing some schedular which should start at a particular time and it should stop after some time.. starting after a delay i can do using timer and timerTask classes.. But stopping i dont have much idea. How to stop the timer after a elapsed time.

Это было полезно?

Решение

If you run your task in a thread, you can keep a reference to the Future object of the task and set a timeout. Something like that :

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
}

You might want to handle the InterruptedException, ExecutionException and TimeoutException separately.

You can also call the .cancel() method on the Future object when your stop timer expires, but I recall reading somewhere that it is not recommanded

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top