java定时器,留着用
发布日期:2025-03-28 00:45:15 浏览次数:6 分类:精选文章

本文共 1199 字,大约阅读时间需要 3 分钟。

在Java中,使用TimerTask来执行定期任务时,需要确保任务在预定的时间点正确启动,并且可以正确处理首次执行时间。如果程序启动时,当前时间已经超过了设定的首次执行时间,则定时器会在下一个周期启动。

为了实现这一点,可以按照以下步骤进行:

  • 导入必要的类

    import java.util.Timer;import java.util.TimerTask;import java.util.Calendar;import java.util.Date;
  • 设置首次执行时间:使用Calendar获取当前时间,并设置为预定的首次执行时间。如果当前时间已经超过了首次执行时间,则将首次执行时间设置为下一个24小时。

    Calendar calendar = Calendar.getInstance();int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH);int day = calendar.get(Calendar.DAY_OF_MONTH);calendar.set(year, month, day, 9, 0, 0); // 设置为每天9:00:00Date firstTime = new Date(calendar.getTime());Date nowDate = new Date();long interval = firstTime.getTime() - nowDate.getTime();if (interval < 0) {    calendar.add(Calendar.DAY_OF_MONTH, 1);    firstTime = new Date(calendar.getTime());    interval = firstTime.getTime() - nowDate.getTime();}
  • 创建Timer实例并安排任务:使用Timer安排定期任务,首次执行时间为firstTime,间隔为24小时。

    Timer timer = new Timer();long period = 24 * 60 * 60 * 1000L; // 24小时的毫秒数TimerTask task = new TimerTask() {    @Override    public void run() {        //uggested定期任务逻辑    }};timer.schedule(task, firstTime, period);
  • 处理取消定时任务:需要注意,当完成定期任务后,应及时取消Timer实例,以避免资源泄漏。

    // 取消定时任务timer.cancel();
  • 这个设置方法确保了无论程序何时启动,定时任务都能正确地在预定时间执行。

    上一篇:多线程,高并发
    下一篇:Trae国内版发布,中国首款AI 原生IDE 正式上线,配置Doubao-1.5-pro,支持切换满血版DeepSeek 模型

    发表评论

    最新留言

    感谢大佬
    [***.8.128.20]2025年04月15日 14时41分58秒