java.utils.Timer で時間をリセットできるようにしたいのですが、X 秒後に 1 回限りのイベントが発生するように設定する必要があります。タイマーが作成されてから 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).
utils タイマーを使用してこれを行う方法がわかりません。cancel() を呼び出した場合、再度スケジュールすることはできません。
この動作を再現する唯一の方法は、javax.swing.Timer を使用することであり、元のタイマーを停止して新しいタイマーを作成する必要があります。すなわち:
timer.stop();
timer = new Timer(8000, ActionListener);
timer.start();
もっと簡単な方法はありますか??