ScheduledExecutorService怎么设置每天定时启动
时间: 2023-11-15 11:02:02 浏览: 35
可以使用ScheduledExecutorService的scheduleAtFixedRate方法来实现每天定时启动。具体实现步骤如下:
1. 创建ScheduledExecutorService对象。
2. 创建Runnable对象,用于执行定时任务。
3. 计算当前时间到第二天零点的时间差,设置延迟启动时间。
4. 设置定时任务的执行周期为24小时。
5. 调用ScheduledExecutorService的scheduleAtFixedRate方法,传入Runnable对象、延迟启动时间和执行周期。
以下是示例代码:
```
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 executorService = Executors.newScheduledThreadPool(1);
Runnable task = new Runnable() {
@Override
public void run() {
// 定时任务的具体实现
System.out.println("定时任务执行了");
}
};
// 计算当前时间到第二天零点的时间差,设置延迟启动时间
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
long initialDelay = 24 * 60 * 60 * 1000 - calendar.get(Calendar.HOUR_OF_DAY) * 60 * 60 * 1000
- calendar.get(Calendar.MINUTE) * 60 * 1000 - calendar.get(Calendar.SECOND) * 1000
- calendar.get(Calendar.MILLISECOND);
// 设置定时任务的执行周期为24小时
long period = 24 * 60 * 60 * 1000;
// 启动定时任务
executorService.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS);
}
}
```
在上面的代码中,我们使用Calendar类计算当前时间到第二天零点的时间差,然后将其作为延迟启动时间传入scheduleAtFixedRate方法中。同时,我们将执行周期设置为24小时,这样就可以实现每天定时启动了。