我必须在java中做timertask。情景是:我必须安排一个任务,以便在一定程度上延迟。如果我点击了一个按钮,它将取消当前的定时器,然后它会重新安排它。如何在java中实现它?java中的计时器任务?
当我使用cancel()
我不能再次访问定时器。那是我不能重用那个对象。我已将Timer
和Timertask
声明为静态。
在此先感谢。
我必须在java中做timertask。情景是:我必须安排一个任务,以便在一定程度上延迟。如果我点击了一个按钮,它将取消当前的定时器,然后它会重新安排它。如何在java中实现它?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();
为此也有Quartz API。它会给你在集群环境中更大的灵活性。
只要他们没有声明为final
,只需创建新的实例。
如果我安排了一个新的任务,那么以前的调度程序停止/杀死它的过程? – Praveen 2010-12-08 14:33:09
这取决于你如何使用它。 – 2010-12-08 14:33:46