timer和quartz都可以实现定时任务。
timer的执行是单线程执行的,quartz执行可以是多线程实现。
首先了解Timer:
timer:有且仅有一个后台线程对多个业务线程进行定时定频率的调度。
timer的构建(timer是通过定时的条用timerTask来实现定时任务的调用):
timer可以理解为某个后台执行的线程,timerTask可以理解为业务线程。
timer的内部构造:
timerTask的运用实例(继承了TimerTask后去实现和堆内的run方法):
执行程序:
Timer的时间调度函数:
schedule的是四种用法。
第一:
意思就是超过timer线程一直处于等待状态。
实例:
main:
第二种:
第三种:
注意的是这里且仅执行一次。
第四种:
scheduleAtFixedRate的两种用法。
第一种:
执行:
第二种:
其他重要函数:
TimerTask的cancel(),scheduledExecutionTime()的用法和Timer的cancel()he purge()函数的用法。
首先:cancel()的作用是取消TimerTask里的任务。
实例(答应五次就关闭定时任务的执行):
scheduledExecutionTime():返回此任务最近实际执行的已安排的时间。
实例:
就是返回最近执行的实际时间。
Timer下面的cancel()函数:终止此计时器,丢弃所有当前已安排的任务。
purge:从此计时器的任务队列中移除所有已取消的任务,并返回取消任务对的个数。
schedule与scheduleAtFixedRate的区别:
第一种:
实例:
第二种:
实例:
注意:延迟后为了赶上本来的执行次数会在同一时间点多次执行。
第三种:
实例:
实例:
timer的缺陷:
第二种: