4

私はJavaでtimertaskを実行する必要があります。シナリオは次のとおりです。最初に、ある程度の遅延のためにタスクをスケジュールする必要があります。ボタンをクリックすると、現在のタイマーがキャンセルされ、スケジュールが変更されます。Javaでそれを実装する方法は?

使用した後cancel()は、タイマーに再度アクセスできません。つまり、そのオブジェクトを再利用することはできません。TimerTimertaskを静的として宣言しました。

前もって感謝します。

4

3 に答える 3

7

私がそれを実装することを考えることができる最も簡単な方法は、Executorを使用することです。

タスクを30秒で実行するようにスケジュールするとします。

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.schedule(new Task(), 30, TimeUnit.SECONDS);

TaskRunnableインターフェイスを実装するクラスである必要があります。

class Task implements Runnable
{
    public void run()
    {
        // do your magic here
    }
}

タスクの実行を停止する必要がある場合は、次のshutdownNow方法を使用できます。

// prevents task from executing if it hasn't executed yet
scheduler.shutdownNow(); 
于 2010-12-08T14:09:46.837 に答える
2

として宣言されていない限り、final新しいインスタンスを作成するだけです。

于 2010-12-08T14:16:36.063 に答える
1

この目的のためのQuartzAPIもあります。これにより、クラスター化された環境での柔軟性が向上します。

于 2010-12-08T14:14:45.627 に答える