java写一个定时器,每天凌晨1点执行任务:从1计数到100
时间: 2024-03-03 10:47:31 浏览: 167
你可以使用Java中的ScheduledExecutorService类来实现定时器的功能,具体实现如下:
```java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class Main {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
// 获取当前时间距离下一天凌晨1点的时间差
long initialDelay = getInitialDelay();
// 每隔24小时执行一次任务
long period = 24 * 60 * 60;
executor.scheduleAtFixedRate(new Task(), initialDelay, period, TimeUnit.SECONDS);
}
// 获取当前时间距离下一天凌晨1点的时间差
private static long getInitialDelay() {
long now = System.currentTimeMillis();
long oneDay = 24 * 60 * 60 * 1000;
long targetTime = now - now % oneDay + oneDay + 1 * 60 * 60 * 1000;
return targetTime - now;
}
}
class Task implements Runnable {
private int count = 1;
@Override
public void run() {
if (count <= 100) {
System.out.println(count++);
} else {
System.exit(0);
}
}
}
```
在上面的代码中,我们使用`ScheduledExecutorService`创建了一个定时器,每隔24小时执行一次`Task`任务。`getInitialDelay()`方法用于计算当前时间距离下一天凌晨1点的时间差。`Task`任务中,我们使用一个计数器从1开始计数,直到计数到100时退出程序。
阅读全文