Java TimerTask - 每天在 XX:MM 小时运行任务



Using Timer and TimerTask.

无法理解为什么此配置在部署时立即启动任务(在基于 Web 的 Spring 应用程序中使用它)。它应该在 today.getTime 开始,然后必须每天重复。

    Calendar today = Calendar.getInstance();
    today.set(Calendar.HOUR_OF_DAY, 3);
    today.set(Calendar.MINUTE, 0);
    today.set(Calendar.SECOND, 0);
    MyTask task = new MyTask();
    Timer timerJob = new Timer();
    timerJob.schedule(task, today.getTime(), 
             TimeUnit.MILLISECONDS.convert(1, TimeUnit.DAYS)); 
我认为

,最好使用CronTrigger或具有24小时重复间隔的触发器。

CronTrigger的例子:

public class CronTriggerRunner {
public static void main(String args[]) throws SchedulerException, Exception {
    SchedulerFactory schedulerFactory = new StdSchedulerFactory();
    Scheduler scheduler = schedulerFactory.getScheduler();
    JobDetail job = JobBuilder.newJob(ClassToRun.class).withIdentity("jobName", "group").build();
    // Starting CronTrigger
    String exp = "0 0 9 * * ?"; //trigger format, everyday at 9:00 am
    Trigger trigger = TriggerBuilder.newTrigger()
                                .startNow()
                                .withSchedule(
                                     CronScheduleBuilder.cronSchedule(exp))
                                .build();
    // Planning job detail
    scheduler.scheduleJob(job, trigger);
    // starting scheduler
    scheduler.start();
}
}

类运行.java

public class ClassToRun implements Job {
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
    try{
        //doSomething
    }
    catch(Exception e){
        e.printStackTrace(System.out);
    }
  }
}

每天上午 9:00,public void execute()功能将做一些:D

希望这会有所帮助。请让我知道。

编辑:您需要下载并添加2个jar文件。 1) 石英-2.2.1.jar 2) slf4j-api-1.6.6.jar

相关内容

最新更新