java 写一个定时任务每天23:45点执行
时间: 2024-05-23 18:15:40 浏览: 5
可以使用Java中的ScheduledExecutorService来实现定时任务。下面是一个简单的例子:
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorServiceDemo {
public static void main(String[] args) {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
// 获取当前时间,计算定时任务的执行时间
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 45);
calendar.set(Calendar.SECOND, 0);
Date executeTime = calendar.getTime();
// 计算延迟时间
long delay = executeTime.getTime() - System.currentTimeMillis();
// 如果延迟时间为负数,则说明定时任务应该在明天执行
if (delay < 0) {
Calendar tomorrow = Calendar.getInstance();
tomorrow.add(Calendar.DAY_OF_YEAR, 1);
tomorrow.set(Calendar.HOUR_OF_DAY, 23);
tomorrow.set(Calendar.MINUTE, 45);
tomorrow.set(Calendar.SECOND, 0);
executeTime = tomorrow.getTime();
delay = executeTime.getTime() - System.currentTimeMillis();
}
// 执行定时任务
scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println("定时任务执行了!");
}
}, delay, 24 * 60 * 60 * 1000, TimeUnit.MILLISECONDS);
}
}
当定时任务到达指定的执行时间时,将会输出一个简单的文本信息。