2010-12-08 38 views
4

我必须在java中做timertask。情景是:我必须安排一个任务,以便在一定程度上延迟。如果我点击了一个按钮,它将取消当前的定时器,然后它会重新安排它。如何在java中实现它?java中的计时器任务?

当我使用cancel()我不能再次访问定时器。那是我不能重用那个对象。我已将TimerTimertask声明为静态。

在此先感谢。

回答

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。它会给你在集群环境中更大的灵活性。

2

只要他们没有声明为final,只需创建新的实例。