Timer 、TimerTask

252 阅读1分钟

TimerTimerTask 是 Java 中用于进行定时任务调度的类。

  1. Timer 的作用:

    • Timer 类允许你调度一个TimerTask(定时任务)以后执行。
    • 主要用于在未来的某个时间点执行重复性任务或者一次性任务。
  2. TimerTask 的作用:

    • TimerTask 是一个抽象类,用于创建一个可以被 Timer 定时调度的任务。
    • 你需要继承 TimerTask 并实现它的 run 方法,定义任务的具体逻辑。
  3. 用法示例:

    import java.util.Timer;
    import java.util.TimerTask;
    
    public class MyTimerTask extends TimerTask {
        @Override
        public void run() {
            System.out.println("Task is being executed!");
        }
    
        public static void main(String[] args) {
            Timer timer = new Timer();
    
            // 创建一个定时任务,延迟5秒后执行,之后每隔1秒执行一次
            timer.schedule(new MyTimerTask(), 5000, 1000);
    
            // 为了演示,让主线程休眠10秒
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
    
            // 取消定时任务
            timer.cancel();
            System.out.println("TimerTask canceled.");
        }
    }
    

    在上面的示例中,MyTimerTask 继承了 TimerTask,并实现了 run 方法,定义了任务的具体逻辑。在 main 方法中,通过 Timerschedule 方法设置定时任务的执行时间和间隔,然后通过 Thread.sleep 让主线程休眠10秒,最后取消定时任务。

  4. 注意事项:

    • 尽量避免在 TimerTaskrun 方法中抛出未捕获的异常,否则可能导致 Timer 中断。
    • TimerTimerTask 都不是线程安全的,因此需要在多线程环境中小心使用,或者考虑使用更为灵活的 ScheduledExecutorService 代替。

总的来说,TimerTimerTask 提供了一种简单的方式来进行定时任务的调度,但在实际应用中,为了获得更灵活的调度和更好的线程安全性,更推荐使用 ScheduledExecutorService