我必须在java中做timertask。场景是:我必须首先安排一个任务延迟一些。如果我点击了一个按钮,它将取消当前的计时器,然后它会重新安排它。如何在java中实现它?
当我用过时,cancel()
我无法再次访问计时器。那就是我不能重用那个对象。我已将Timer
and声明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();
只要它们未声明为final
,只需创建新实例即可。
也有用于此目的的Quartz API。它将为您在集群环境中提供更大的灵活性。