今天来介绍下timer的schedule(TimerTask task, Date firstTime, long period)方法,该方法的主要作用是在指定的日期之后,按照指定的间隔周期性的无限循环的执行某一任务。
这个类就是timer类执行的任务,在项目中把要循环执行的代码放在run方法既可以了。
计划时间晚于当前时间,时间到了就按周期执行,下面请看测试代码
从结果可以看到,任务在设定的时间到了之后按照周期无限循环执行任务的代码,并且按照我们设定的4s时间。
计划时间早于当前时间,提前运行后周期执行
从结果可以看到,如果设置的时间比当前时间早的话,那么先会执行一次后,再按照我们设定的时间循环运行。
但是呢,如果我们设置的时间,为4s的话,而执行的任务花费了5s时间,那么会是执行完之后,再等待4s时间接着运行吗?下面请看测试。
如上图所示,我们在MyTask1里面休眠5s模拟任务执行5s的情况,5s后打印出时间(这边就不贴出代码了,自己补充)。
从结果可以看到,如果我们任务的执行时间大于我们设置的循环执行时间的时候,那么任务执行完之后,马上就开始执行。而不是等待任务执行完之后等4s再执行。
下面在看下任务执行时间小于设定时间的情况。
这边可以看到,如果任务执行花费2s,而我们设置的循环运行时间为4s,那么从任务开始时就开始计算时间,不管任务执行多少秒(只要在设定的循环时间之内),下次执行任务的时间都是从开始时间到设定的时间,图上开始时间后4s开始执行下一次任务。