什么是定时任务
定时任务是指基于给定的时间点、给定的时间间隔或者给定的执行次数自动执行一项或多项任务。
常用的定时任务如下。
1.crontab命令
直接使用linux系统自带的crontab程序进行定时任务控制。
2.JDK Timer
java.util.Timer定时器为单线程,定时调度所拥有的TimeTask任务。
public class HelloTimerTask extends TimerTask{
@Override
public void run() {
System.out.println(new Date());
}
}
public class HelloTimer {
public static void main(String[] args) {
Timer timer = new Timer();
System.out.println(new Date());
timer.schedule(new HelloTimerTask(), 1000, 2000);
}
}
Timer类缺陷如下:
- 时间延迟不准确。由于是单线程执行,如果某个任务执行时间过长,可能导致后续任务时间延迟。
- 异常终止。如果任务抛出未捕获的异常,会导致Timer线程终止,所有任务终止。
- 执行周期任务时依赖系统时间。当系统时间发生变化,会导致执行上的变化。
3.ScheduledExecutor
public class HelloTask implements Runnable{
@Override
public void run() {
System.out.println(new Date());
}
}