JDK 1.3 开始,Java 通过 java.util.Timer 和 java.util.TimerTask 两个类提供了简单的任务调度功能,Java Timer 允许按照固定频率重复执行某项任务;
Java Timer 只适合于对执行时间非常短的任务进行调度,这是由于在 Timer 中所有的的 TimerTask 都在统一背景线程中执行,长时间执行的任务会严重影响到 Timer 的调度工作,此时可以使用 Quartz 框架来代替业务实现;
TimerTask 代表一个调度任务,在每次执行任务时,JDK Timer 都会使用相同的 TimerTask 实例(而 Quartz 是每次创建一个新的 Job 实例);
TimerTask 本身已经实现了 Runnable,创建一个自定义的任务类,只需要继承 TimerTask,并实现相关方法即可;
包含的方法如下:
任务调度的容器,用于控制 TimeTask 的行为:在延迟一段时间后或者在指定时间点后运行一次或周期性地运行任务;在 Timer 内部使用了 Object#wait(long time) 进行任务地实时执行;
一个 Timer 中可以容纳多个 TimeTask,但是这些 TimeTask 都共享一个线程,因此 TimeTask 必须是执行时间短暂的,否则会给后面的任务调度造成很大的负担;
主要的成员方法有以下:
以固定的时间间隔执行任务:
以固定的频率执行任务:
其他方法: