Java每天定时任务示例
时间: 2023-07-04 09:04:27 浏览: 104
以下是 Java 中定时任务的示例代码,使用 ScheduledExecutorService 实现:
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledTaskExample {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
// 定义任务
Runnable task = new Runnable() {
public void run() {
System.out.println("定时任务执行中...");
}
};
// 每天的固定时间执行
executor.scheduleAtFixedRate(task, getDelay(), 24 * 60 * 60, TimeUnit.SECONDS);
}
private static long getDelay() {
// 计算距离下一个固定时间点的延迟时间
long now = System.currentTimeMillis();
long nextExecutionTime = getNextExecutionTime();
return nextExecutionTime - now;
}
private static long getNextExecutionTime() {
// 计算下一个固定时间点
// 在这里假设每天固定时间点是 23:00:00
long now = System.currentTimeMillis();
long millisInDay = 24 * 60 * 60 * 1000;
long nextExecutionTime = now - (now % millisInDay) + (23 * 60 * 60 * 1000);
if (nextExecutionTime <= now) {
nextExecutionTime += millisInDay;
}
return nextExecutionTime;
}
}
```
在上面的代码中,我们使用 ScheduledExecutorService 创建一个线程池,并使用 scheduleAtFixedRate 方法安排一个定时任务。该方法接受三个参数:
1. 要执行的任务对象
2. 任务的初始延迟时间
3. 任务的周期时间
在本例中,我们使用 getNextExecutionTime 方法计算出下一个固定时间点,然后通过 getDelay 方法计算出距离下一个固定时间点的延迟时间。这样,我们就可以在每天固定时间点执行定时任务了。
阅读全文