Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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 quartz调度程序在特定时间运行_Java - Fatal编程技术网

java quartz调度程序在特定时间运行

java quartz调度程序在特定时间运行,java,Java,例如,我想编写一个Java程序,在每天上午12点打印“Hello World”,如何使用Quartz调度器实现这一点 Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0); trigger.setName("trigger1"); trigger.setGroup("group1"); 像这样?我应该将打印“hello world”方法放在哪里?您必须通过实现作业接口并提供执行方法的实现来创建自定义作业。在执行方法中,您可以打印“hello

例如,我想编写一个Java程序,在每天上午12点打印“Hello World”,如何使用Quartz调度器实现这一点

Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0);
trigger.setName("trigger1");
trigger.setGroup("group1");

像这样?我应该将打印“hello world”方法放在哪里?

您必须通过实现作业接口并提供执行方法的实现来创建自定义作业。在执行方法中,您可以打印“hello world”。然后你可以这样安排你的工作

scheduler.scheduleJob(job, trigger);
有关分步详细信息,请参阅此链接:

您可以使用表达式来计划作业的执行。e、 g:

public static class HelloJob implements Job {
    @Override
    public void execute(JobExecutionContext ctx) throws JobExecutionException {
        System.out.println("Hello World");
    }
}

public static void main(String[] args) throws SchedulerException {
    String exp = "0 0 0 1/1 * ? *";

    SchedulerFactory factory = new StdSchedulerFactory();
    Scheduler scheduler = factory.getScheduler();
    scheduler.start();
    JobDetail job = JobBuilder.newJob(HelloJob.class).build();
    Trigger trigger = TriggerBuilder.newTrigger()
                                    .startNow()
                                    .withSchedule(
                                         CronScheduleBuilder.cronSchedule(exp))
                                    .build();
    scheduler.scheduleJob(job, trigger);
}

有关构建另一个表达式的信息,请参见。e、 g.
0 0/1*1/1**每分钟查看一次输出。另请参见。

您可以为此创建cron表达式。要进行quartz作业,您需要具有以下对象

  • 工作
  • 将与作业关联的任务
  • 最后创建一个触发器并将作业与触发器关联
  • 两种类型的触发器

    简单的触发器,可以控制作业,可以每分钟或10分钟运行一次,以此类推。您还可以有其他参数

    initial delay - to kick off
    
    repeatcount - no of times the job should be executes, if -1 then job will be executed infinitely
    
    在您的情况下,您可以使用cron触发器,因为您希望每天上午12点运行

    有关更多详细信息和示例程序,请查看下面的链接

    关于quartz cron表达式,请参阅quartz文档

  • 下载quartz Jar放入lib文件夹构建项目
  • 创建要从中计划任务的类(作业)

    import org.apache.log4j.Logger;
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class MyJob implements Job  {
        private Logger log = Logger.getLogger(MyJob.class);
        @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
    
            log.debug("Hi....");
            System.out.println("Corn Executing.....");
    
        }
    }
    
  • 为计划任务创建类

    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.SimpleScheduleBuilder;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class JobScheduler {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            try {
                JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myjob").build();
    
                Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(30).repeatForever()).build();
    
                SchedulerFactory schFactory = new StdSchedulerFactory();
                Scheduler scheduler = schFactory.getScheduler(); 
                scheduler.start();
                scheduler.scheduleJob(job, trigger);
    
            }catch (SchedulerException e) {
    
                e.printStackTrace();
            }
        }
    }
    

  • 甚至比提供cron表达式更简单,您可以使用方法。只需将
    CronScheduleBuilder.cronSchedule(exp)
    替换为
    CronScheduleBuilder.dailyAtHourAndMinute(0,0)
    。事实上,它会将小时和分钟转换为等效的cron表达式。如何添加我的方法?不上课