使用ScheduledExecutorService定时在晚上八点打印hello world
时间: 2024-05-28 22:06:58 浏览: 100
ScheduledExecutorService是Java多线程包中提供的一种定时任务的方式,可以帮助我们在特定时间点或者以特定频率执行某些任务。如果想要定时在晚上八点打印hello world,可以使用以下代码实现:
```
import java.util.Calendar;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduleTask {
public static void main(String[] args) {
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
// 获取当前时间
Calendar now = Calendar.getInstance();
// 设置晚上8点的时间
Calendar eveningEight = Calendar.getInstance();
eveningEight.set(Calendar.HOUR_OF_DAY, 20);
eveningEight.set(Calendar.MINUTE, 0);
eveningEight.set(Calendar.SECOND, 0);
// 如果当前时间比晚上8点早,则在今天晚上8点执行任务
// 否则在明天晚上8点执行任务
if (now.after(eveningEight)) {
eveningEight.add(Calendar.DATE, 1);
}
long initialDelay = eveningEight.getTimeInMillis() - now.getTimeInMillis();
executor.scheduleAtFixedRate(() -> System.out.println("hello world"), initialDelay, 24 * 60 * 60 * 1000, TimeUnit.MILLISECONDS);
}
}
```
这里我们使用了scheduleAtFixedRate方法,它可以让任务按照固定频率执行,第一个参数是我们要执行的任务,第二个参数是我们要等待的时间(毫秒数),第三个参数是我们要执行的间隔时间(毫秒数)。在上面的代码中,我们设置了第一个任务在晚上8点执行,然后每隔24小时再执行一次。
阅读全文