Java实现每天固定时间运行

1. 流程图

flowchart TD
    A[定义定时任务] --> B[创建定时任务]
    B --> C[设定定时任务执行时间]
    C --> D[编写定时任务执行的代码]
    D --> E[启动定时任务]

2. 代码实现

首先,我们需要定义一个定时任务类,用于执行每天固定时间的操作。

import java.util.Timer;
import java.util.TimerTask;

public class DailyTask {
    private Timer timer;

    public DailyTask() {
        timer = new Timer();
    }

    public void startTask() {
        // 定时任务执行时间
        String taskTime = "09:00:00";

        // 创建定时任务
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                // 编写定时任务执行的代码
                System.out.println("每天早上9点执行的任务");
            }
        };

        // 获取当前时间
        long currentTime = System.currentTimeMillis();

        // 解析定时任务执行时间
        int hour = Integer.parseInt(taskTime.split(":")[0]);
        int minute = Integer.parseInt(taskTime.split(":")[1]);
        int second = Integer.parseInt(taskTime.split(":")[2]);

        // 计算定时任务第一次执行的时间
        long firstTime = currentTime;
        if (currentTime >= getTime(hour, minute, second)) {
            firstTime = firstTime + 24 * 60 * 60 * 1000;
        }
        firstTime = firstTime + getTime(hour, minute, second) - currentTime;

        // 启动定时任务
        timer.schedule(task, firstTime, 24 * 60 * 60 * 1000);
    }

    private long getTime(int hour, int minute, int second) {
        return (hour * 60 * 60 + minute * 60 + second) * 1000;
    }

    public void stopTask() {
        timer.cancel();
    }

    public static void main(String[] args) {
        DailyTask dailyTask = new DailyTask();
        dailyTask.startTask();
    }
}

3. 代码解释

  • 首先,我们创建一个DailyTask类,用于执行每天固定时间的任务。
  • 在startTask()方法中,我们定义了定时任务的执行时间,这里假设为每天早上9点执行。
  • 然后,我们创建了一个TimerTask对象,并重写了其run()方法,将需要定时执行的代码写在run()方法中。这里只是简单地输出了一句话,你可以根据实际需求编写自己的代码。
  • 接下来,我们获取当前时间,并解析定时任务的执行时间。
  • 根据当前时间和定时任务的执行时间,计算出定时任务第一次执行的时间。
  • 最后,我们使用Timer的schedule()方法,设定定时任务的执行时间,并启动定时任务。

4. 类图

classDiagram
    class TimerTask {
        <<abstract>>
        +run()
    }
    class DailyTask {
        -timer: Timer
        +startTask()
        +stopTask()
    }
    class Timer {
        +schedule(TimerTask task, long delay, long period)
        +cancel()
    }

5. 总结

通过以上步骤,我们可以实现每天固定时间运行的任务。你可以根据自己的需求修改定时任务的执行时间和具体的执行代码。定时任务的实现主要依赖于Java中的Timer和TimerTask类。Timer类可以用来设定定时任务的执行时间,并启动定时任务,而TimerTask类则是具体的定时任务实现。