Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 石英调度器之间的时间间隔_Java_Quartz Scheduler_Scheduler_Crontrigger - Fatal编程技术网

Java 石英调度器之间的时间间隔

Java 石英调度器之间的时间间隔,java,quartz-scheduler,scheduler,crontrigger,Java,Quartz Scheduler,Scheduler,Crontrigger,我正在使用quartz scheduler安排作业。我有一个案例,从每天晚上(9:00 PM)到第二天早上(06:00 am)执行作业。我如何实现这一点。目前我正在像这样初始化触发器 Trigger trigger2 = newTrigger() .withIdentity("trigger1", "group1") .startNow() .withSchedule(simpleSchedule() .withIntervalInSe

我正在使用quartz scheduler安排作业。我有一个案例,从每天晚上(9:00 PM)到第二天早上(06:00 am)执行作业。我如何实现这一点。目前我正在像这样初始化触发器

      Trigger trigger2 = newTrigger()
    .withIdentity("trigger1", "group1")
    .startNow()
    .withSchedule(simpleSchedule()
            .withIntervalInSeconds(10)
            .repeatForever())            
    .build();

我需要做哪些修改才能满足要求?

这里有一个参考,您可以使用此参考来安排使用quartz的时间。

这部分可能对你有帮助

JobDetail jDetail = new JobDetail("Newsletter", "NJob", MyJob.class);

        //"0 0 12 * * ?" Fire at 12pm (noon) every day
        //"0/2 * * * * ?" Fire at every 2 seconds every day

 CronTrigger crTrigger = new CronTrigger("cronTrigger", "NJob", "0/2 * * * * ?");

如果您选择了,您可以使用如下表达式
0*21-23,0-5?**每天从早上00:00到早上05:59以及从晚上9:00到晚上23:59每分钟解雇一份工作,因此:

trigger = newTrigger()
    .withIdentity("trigger7", "group1")
    .withSchedule(cronSchedule("0 * 21-23,0-5 ? * *"))
    .build();
记住导入
import static org.quartz.CronScheduleBuilder.cronSchedule


频率(在本例中为每分钟)取决于您的要求。

如果您需要每天运行一次作业,则只需指定作业的开始时间:

newTrigger().withSchedule(
      CronScheduleBuilder.dailyAtHourAndMinute(21,0)).build();
如果计划的作业(数据库处理)需要很多小时,并且可能超过早上6点的时间限制,Quartz scheduler将无法帮助您。石英只是开始工作。你应该在早上6点停止跑步。例如,假设作业是一种方法:

public void doSomeDBOperations() {
    while(have more data to process) {
        if(Calendar.getInstance().get(Calendar.HOUR_OF_DAY) == 6) {
           break;
        }

        //insert data
    }
}

我不想使用crontrigger如果你真的不想使用crontrigger,你可以安排两个不同的24小时间隔,开始时间是晚上9点和早上6点。。我将使用crontrigger..那么CronExpression将如何使用..我对CronExpression感到困惑..有人能帮助您在计划程序中执行什么类型的任务,以便您需要自己停止吗???我正在处理数据库中的数据并插入到新表中。我只想在数据库流量较低的情况下执行..这操作可能需要很长时间。这就是我要指定时间范围的原因