2016-05-30 52 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 –

相關問題