Timer定时器
程序员文章站
2022-07-14 13:17:51
...
记得之前看过关于定时任务的源码,但是长时间没有看,又忘了。今天又看了一遍,加深印象,写下来复习一下。
一、首先是在延迟一段时间后调度任务或在指定的时间调度任务。但是在执行完任务后timer并不是即可结束,而是可能在任何时间结束。所以想要立即结束,需要在执行完成之后调用cancel方法。
schedule(TimerTask timer, long delay);
schedule(TimeTask timer, Date delay);
二、在延迟一段时间后调度任务或在指定的时间调度任务,在延迟period毫秒之后重复执行任务。
schedule(TimerTask timer, long delay, long period);
schedule(TimerTask timer, Date date, long period);
scheduleAtFixedRate(TimerTask timer, long delay, long period);
scheduleAtFixedRate(TimerTask timer, Date delay, long period);
上面四个方法中前两个方法是在间隔固定的时间执行一次。
后两个调度任务的方法要求重复执行的速率固定,如果某一次调度的时间超过了period的时间,后续的任务执行的时间间隔可能不是period,直到频率为1/period为止。