Я хотел бы иметь java.utils.Timer с переустанавливаемым временем в java. Мне нужно установить одноразовое событие, которое будет происходить через X секунд. Если между временем создания таймера и X секундами ничего не происходит, событие происходит как обычно.
Если, однако, до истечения X секунд я решу, что событие должно произойти через Y секунд, тогда я хочу сообщить таймеру, чтобы он сбрасывал свое время так, чтобы событие происходило через Y секунд.
Например. таймер должен быть в состоянии сделать что-то вроде:
Timer timer = new Timer();
timer.schedule(timerTask, 5000); //Timer starts in 5000 ms (X)
//At some point between 0 and 5000 ms...
setNewTime(timer, 8000); //timerTask will fire in 8000ms from NOW (Y).
Я не вижу способа сделать это с помощью таймера утилит, так как если вы вызываете метод cancel (), вы не можете запланировать его снова.
Единственный способ, которым я приблизился к репликации этого поведения, - это использование javax.swing.Timer, включающее остановку исходного таймера и создание нового. т.е.:
timer.stop();
timer = new Timer(8000, ActionListener);
timer.start();
Есть ли более простой способ ??