2016-11-10 1185 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秒,并关闭了你的日程安排任务。 –

相关问题