java quartz scheduler在特定时间运行

use*_*504 6 java

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

Trigger trigger = TriggerUtils.makeDailyTrigger(0, 0);
trigger.setName("trigger1");
trigger.setGroup("group1");
Run Code Online (Sandbox Code Playgroud)

像这样?我应该在哪里打印"hello world"方法?

Pau*_*gas 8

您可以使用表达式来安排作业的执行.例如:

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);
}
Run Code Online (Sandbox Code Playgroud)

请参阅http://www.cronmaker.com/以构建另一个表达式.例如0 0/1 * 1/1 * ? *每分钟查看输出.另见Cron Expressions.

  • 甚至比提供cron表达式更简单,你可以使用[CronScheduleBuilder#dailyAtHourAndMinute(int,int)](http://quartz-scheduler.org/api/2.0.0/org/quartz/CronScheduleBuilder.html#dailyAtHourAndMinute%28int, %20int%29)方法.只需用`CronScheduleBuilder.dailyAtHourAndMinute(0,0)`替换`CronScheduleBuilder.cronSchedule(exp)`.实际上,它会将小时和分钟转换为等效的cron表达式. (3认同)