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类则是具体的定时任务实现。