如何使用ScheduledExecutorService立即第一次运行任务?

时间:2014-09-22 07:10:31

标签: java multithreading background-thread scheduledexecutorservice

我有一项任务,我需要在早上6点运行。我有下面的代码来完成这项工作,而且它正在使用ScheduledExecutorService

ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);

Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int delayInHour = hour < 6 ? 6 - hour : 6 - hour + 24;

System.out.println("Current Hour: "+hour);
System.out.println("Commuted Delay for next 6 AM: "+delayInHour);

scheduler.scheduleAtFixedRate(new MyTask(), delayInHour, 24, TimeUnit.HOURS);

问题陈述: -

使用上面的代码,假设我现在运行它,那么它将在早上6点执行MyTask()。但我需要做的是,每当我第一次运行我的程序时,它应该立即执行MyTask(),下一次运行应该在早上6点发生。

是否可以使用上述代码实现?

0 个答案:

没有答案