私はJavaでtimertaskを実行する必要があります。シナリオは次のとおりです。最初に、ある程度の遅延のためにタスクをスケジュールする必要があります。ボタンをクリックすると、現在のタイマーがキャンセルされ、スケジュールが変更されます。Javaでそれを実装する方法は?
使用した後cancel()
は、タイマーに再度アクセスできません。つまり、そのオブジェクトを再利用することはできません。Timer
とTimertask
を静的として宣言しました。
前もって感謝します。
私がそれを実装することを考えることができる最も簡単な方法は、Executorを使用することです。
タスクを30秒で実行するようにスケジュールするとします。
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(new Task(), 30, TimeUnit.SECONDS);
Task
Runnable
インターフェイスを実装するクラスである必要があります。
class Task implements Runnable
{
public void run()
{
// do your magic here
}
}
タスクの実行を停止する必要がある場合は、次のshutdownNow
方法を使用できます。
// prevents task from executing if it hasn't executed yet
scheduler.shutdownNow();
として宣言されていない限り、final
新しいインスタンスを作成するだけです。
この目的のためのQuartzAPIもあります。これにより、クラスター化された環境での柔軟性が向上します。