Java 定时任务-最简单的3种实现方法一
一、Timer
Timer是JAVA自带的定时任务类,实现如下:
public class MyTimerTask {
public static void main(String[] args) {
// 定义一个任务
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
System.out.println("打印当前时间:" + new Date());
}
};
// 计时器
Timer timer = new Timer();
// 开始执行任务 (延迟1000毫秒执行,每3000毫秒执行一次)
timer.schedule(timerTask, 1000, 3000);
}
}
Timer 优缺点分析
优点是使用简单,缺点是当添加并执行多个任务时,前面任务的执行用时和异常将影响到后面任务,这边深海建议谨慎使用。
二、ScheduledExecutorService
ScheduledExecutorService 也是Java自带的类,
它可以实现Timer具备的所有功能,并解决了 Timer类存在的问题。
实现如下:
public class MyScheduledExecutorService {
public static void main(String[] args) {
// 创建任务队列 10 为线程数量
ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(10);
// 执行任务
scheduledExecutorService.scheduleAtFixedRate(() -> {
System.out.println("打印当前时间:" + new Date());
}, 1, 3, TimeUnit.SECONDS); // 1s 后开始执行,每 3s 执行一次
}
}
ScheduledExecutorService 优缺点分析
优点是,该类是JDK1.5自带的类,使用简单,缺点是该方案仅适用于单机环境

