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自带的类,使用简单,缺点是该方案仅适用于单机环境