我需要在Java中完成计时器任务。场景是:我需要对某个延迟进行任务调度。如果我点击了一个按钮,它将取消当前定时器,然后重新安排任务。如何在Java中实现?
当我使用
提前致谢。
当我使用
cancel()
时,我无法再次访问定时器。也就是说,我不能重用该对象。我已经将Timer
和Timertask
声明为静态。提前致谢。
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();
scheduler.schedule()
返回一个Future
对象,你只需要记住这个Future
并使用它的cancel()
方法从Executor
中移除单个任务,然后可以安排一个新的任务。你不必每次都创建一个新的Executor
。只需在按钮被点击时取消旧任务并安排新任务即可。 - Reboot