Из моих чтений кажется, что ScheduledExecutorService — это правильный способ запуска и остановки таймеров в Java.
Мне нужно портировать некоторый код, который запускает и останавливает таймер. Это не периодический таймер. Этот код останавливает таймер перед его запуском. Таким образом, каждый запуск на самом деле является перезапуском(). Я ищу правильный способ сделать это с помощью ScheduledExecutorService. Вот что я придумал. Ищу комментарии и понимание того, что мне не хватает:
ScheduledExecutorService _Timer = Executors.newScheduledThreadPool(1);
ScheduledFuture<?> _TimerFuture = null;
private boolean startTimer() {
try {
if (_TimerFuture != null) {
//cancel execution of the future task (TimerPopTask())
//If task is already running, do not interrupt it.
_TimerFuture.cancel(false);
}
_TimerFuture = _Timer.schedule(new TimerPopTask(),
TIMER_IN_SECONDS,
TimeUnit.SECONDS);
return true;
} catch (Exception e) {
return false;
}
}
private boolean stopTimer() {
try {
if (_TimerFuture != null) {
//cancel execution of the future task (TimerPopTask())
//If task is already running, interrupt it here.
_TimerFuture.cancel(true);
}
return true;
} catch (Exception e) {
return false;
}
}
private class TimerPopTask implements Runnable {
public void run () {
TimerPopped();
}
}
public void TimerPopped () {
//Do Something
}
тиа, рубль