Задача таймера в Java? - PullRequest
       5

Задача таймера в Java?

4 голосов
/ 08 декабря 2010

Я должен сделать таймерную задачу в Java. Сценарий таков: я должен запланировать задание на некоторую задержку изначально. Если я нажал кнопку, он отменит текущий таймер, а затем перенесет его. Как реализовать это в Java?

когда я использовал cancel(), я не могу снова получить доступ к таймеру. то есть я не могу повторно использовать этот объект. я объявил Timer и Timertask как статические.

Заранее спасибо.

Ответы [ 3 ]

7 голосов
/ 08 декабря 2010

Самый простой способ реализовать это, используя 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(); 
2 голосов
/ 08 декабря 2010

Пока они не объявлены как final, просто создайте новые экземпляры.

1 голос
/ 08 декабря 2010

Для этой цели также существует Кварцевый API .Это даст вам больше гибкости в кластерной среде.

...