2016-11-10 238 views
3
JobDetail job1 = JobBuilder.newJob(FirstJob.class).withIdentity("job1", "group1").build(); 

     Trigger trigger1 = TriggerBuilder.newTrigger().withIdentity("cronTrigger1", "group1") 
       .withSchedule(CronScheduleBuilder.cronSchedule("*/10 * * * * ?")).build(); 

     Scheduler scheduler1 = new StdSchedulerFactory().getScheduler(); 
     scheduler1.start(); 
     scheduler1.scheduleJob(job1, trigger1); 

     JobDetail job2 = JobBuilder.newJob(SecondJob.class).withIdentity("job2", "group2").build(); 

     Trigger trigger2 = TriggerBuilder.newTrigger().withIdentity("cronTrigger2", "group2") 
       .withSchedule(CronScheduleBuilder.cronSchedule(new CronExpression("0/7 * * * * ?"))).build(); 

     Scheduler scheduler2 = new StdSchedulerFactory().getScheduler(); 
     scheduler2.start(); 
     scheduler2.scheduleJob(job2, trigger2); 

     Thread.sleep(100000); 

     scheduler1.shutdown(); 
     scheduler2.shutdown(); 

我試圖每隔5分鐘執行一次Cron作業,但不能按時執行。我認爲時間表達是錯誤的。如何每5分鐘執行一次cron作業?

您如何設置1分鐘和5分鐘作業的時間表達以及2分鐘1小時的作業?

+2

您可以使用在線cron作業表達式構建器[此處](http://www.cronmaker.com/)。 –

+0

@TheLostMind請告訴我哪裏做錯了,因爲當我設定我的工作是執行,但我必須設置工作1 5分鐘和工作2 1小時 –

+0

0 0/5 * 1/1 *? *所以5分鐘它應該喜歡這個權利請等待讓我檢查 –

回答

5

作業1,5分鐘後,你可以使用:

*/5 * * * * ? 

因爲第一場是分鐘。如果您在此字段中指定*,則它每分鐘運行一次。如果您在第一個字段中指定*/5,則每5分鐘運行一次,如上所示。

作業2,1小時,你可以用:

0 */1 * * * 

因爲第二場是幾個小時。如果您在此字段中指定*,則它每小時運行一次。如果您在第二個字段中指定*/5,則每5小時運行一次,如上所示。

與cron不相關,但您的代碼似乎缺少傳遞給TheLostMind評論的表達式。

正確的句子作業1:

Trigger trigger1 = TriggerBuilder.newTrigger().withIdentity("cronTrigger1", "group1") 
       .withSchedule(CronScheduleBuilder.cronSchedule(new CronExpression("*/10 * * * * ?"))).build(); 

希望它能幫助。

+0

但它停止一次Excute可以請你打電話給我什麼我做錯了 –

+0

爲什麼我的工作停止2次後執行 –

+0

@MhanazSyed,因爲你只能睡100秒,並關閉了你的日程安排任務。 –

相關問題