要在Java中实现在每天12:00:00或下午4:00:00触发定时任务,其他时间可以人为的触发任务
时间: 2023-08-14 22:07:24 浏览: 131
基于PHP+JavaScript的便于二次开发的低成本的定时任务调度与管理系统.zip
在Java中,可以使用`Timer`和`TimerTask`类来实现定时任务。以下是一个示例代码,可以在每天12:00:00和下午4:00:00触发定时任务:
```java
import java.util.Timer;
import java.util.TimerTask;
public class ScheduledTask {
public static void main(String[] args) {
Timer timer = new Timer();
timer.schedule(new Task(), getDelay());
}
private static long getDelay() {
long current = System.currentTimeMillis();
long delay = 0;
// 设置定时任务的触发时间为12:00:00或下午4:00:00
if (current <= getTriggerTime("12:00:00")) {
delay = getTriggerTime("12:00:00") - current;
} else if (current <= getTriggerTime("16:00:00")) {
delay = getTriggerTime("16:00:00") - current;
} else {
delay = getTriggerTime("12:00:00") + 24 * 60 * 60 * 1000 - current;
}
return delay;
}
private static long getTriggerTime(String time) {
String[] arr = time.split(":");
int hour = Integer.parseInt(arr[0]);
int minute = Integer.parseInt(arr[1]);
int second = Integer.parseInt(arr[2]);
long triggerTime = hour * 60 * 60 * 1000 + minute * 60 * 1000 + second * 1000;
return triggerTime;
}
static class Task extends TimerTask {
@Override
public void run() {
System.out.println("定时任务触发了!");
}
}
}
```
在上面的代码中,`getDelay()`方法用于计算当前时间到下一个触发时间的时间差,`getTriggerTime()`方法用于将字符串类型的时间转换为毫秒数。在`main()`方法中,`Timer`类的`schedule()`方法用于安排定时任务。当时间到达指定的时间时,`Task`类的`run()`方法会被调用,从而执行定时任务。
阅读全文