java中timer怎么用

avatar
作者
猴君
阅读量:0

在Java中,Timer类用于执行一次性或重复的固定延迟任务。它提供了简单易用的API来安排任务在特定的时间执行。

以下是使用Timer类的基本步骤:

  1. 创建一个Timer实例: 使用Timer类的默认构造函数创建一个新的Timer实例。
Timer timer = new Timer(); 
  1. 安排一次性任务: 使用schedule(TimerTask task, Date delay)方法安排一个任务在一次指定的延迟后执行。
TimerTask task = new MyTask(); // MyTask是一个实现了TimerTask接口的类 Date delay = new Date(System.currentTimeMillis() + 5000); // 5秒后的时间 timer.schedule(task, delay); 
  1. 安排重复任务: 使用scheduleAtFixedRate(TimerTask task, Date initialDelay, long period)scheduleWithFixedDelay(TimerTask task, Date initialDelay, long delay, boolean lastExecutionTime)方法安排一个任务以固定的频率重复执行。

    • scheduleAtFixedRate:在任务之间的固定时间间隔内执行任务。如果任务的执行时间超过了间隔时间,那么下一次任务将在当前任务执行完成后立即开始。
    • scheduleWithFixedDelay:在任务执行完成后等待固定的时间间隔后再执行下一次任务。
TimerTask task = new MyRepeatedTask(); // MyRepeatedTask是一个实现了TimerTask接口的类 Date initialDelay = new Date(System.currentTimeMillis() + 5000); // 5秒后的时间 long period = 10000; // 每隔10秒执行一次 timer.scheduleAtFixedRate(task, initialDelay, period); 

或者

TimerTask task = new MyRepeatedTask(); Date initialDelay = new Date(System.currentTimeMillis() + 5000); long delay = 10000; // 在任务执行完成后等待10秒再执行下一次任务 timer.scheduleWithFixedDelay(task, initialDelay, delay); 
  1. 取消任务: 使用cancel()方法取消一个已安排的任务。如果任务尚未开始,那么它将被完全取消;如果任务已经开始但尚未完成,那么它将在下一次执行时间之前被取消。
timer.cancel(); 

注意:Timer类是线程安全的,但它的方法不是。如果你需要在多线程环境中使用Timer,请确保你的代码是线程安全的。

此外,从Java 1.5开始,推荐使用ScheduledExecutorService接口及其实现类(如ScheduledThreadPoolExecutor)来替代Timer类,因为它们提供了更强大和灵活的任务调度功能。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!