2010-12-08 4 views
4

Мне нужно сделать timertask в java. Сценарий: я должен запланировать задачу для некоторой задержки в целом. Если я нажал кнопку, он отменит текущий таймер, а затем перепланирует его. Как реализовать его в java?Таймер Задача в java?

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

Спасибо заранее.

ответ

7

Самый простой способ, который я могу придумать, заключается в использовании 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(); 
+0

если я планирую новую задачу, тогда предыдущий планировщик останавливает/убивает свой процесс? – Praveen 2010-12-08 14:33:09

+0

Это зависит от того, как вы его используете. – 2010-12-08 14:33:46

1

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

2

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