2016-05-30 47 views
1

使用Timer和TimerTask。的Java的TimerTask - 在XX运行任务:MM小时每天

无法理解为什么这种配置在部署立即启动任务(在基于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)); 

回答

1

我想,用24小时重复间隔使用CronTrigger或Trigger会更好。 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(); 
} 
} 

ClassToRun.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()功能将DoSomething的:d

希望这会有所帮助。请告诉我。

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

+0

我需要添加Quartz依赖? – abipc

+0

@abipc是的,我忘了它。我使用了2个库。它们是:1)quartz-2.2.1.jar 2)slf4j-api-1.6.6.jar –

相关问题