<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.3</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.3</version> </dependency>
log4j.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="default" class="org.apache.log4j.ConsoleAppender"> <param name="target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%p] %d{dd MMM hh:mm:ss.SSS aa} %t [%c]%n%m%n%n"/> </layout> </appender> <logger name="org.quartz"> <level value="error" /> </logger> <root> <level value="debug" /> <appender-ref ref="default" /> </root> </log4j:configuration>
定义一个任务,实现Job 接口
public class EchoJob implements Job { private static Logger _log = LoggerFactory.getLogger(EchoJob.class); @Override public void execute(JobExecutionContext context) throws JobExecutionException { _log.debug("echo: 入门例子"); } }
将任务和调度器绑定起来
/** * Created by it * Created in 2019年1月26日 * Description: */ public class Example1 { private static Logger _log = LoggerFactory.getLogger(Example1.class); public static void main(String[] args) throws Exception { Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.start(); _log.debug("调度器启动成功..."); // 定义一次任务 JobDetail job = JobBuilder.newJob(EchoJob.class) .withIdentity("jobName1", "groupName1").build(); // 定义执行时间,2秒1次 Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("triggerName1", "groupName1") .withSchedule( CronScheduleBuilder.cronSchedule("0/2 * * * * ?")) .build(); _log.debug("调度器,添加一次任务:{}", job.getKey()); scheduler.scheduleJob(job, trigger); TimeUnit.SECONDS.sleep(10); scheduler.shutdown(true); _log.debug("调度器10秒后停止,shutdown入参:{},让任务调度完", true); } }
测试
[DEBUG] 27 一月 03:47:24.020 下午 main [priv.dengjl.my_quartz.scheduler.Example1] 调度器启动成功... [DEBUG] 27 一月 03:47:24.033 下午 main [priv.dengjl.my_quartz.scheduler.Example1] 调度器,添加一次任务:groupName1.jobName1 [DEBUG] 27 一月 03:47:24.044 下午 DefaultQuartzScheduler_Worker-1 [priv.dengjl.my_quartz.job.EchoJob] echo: 入门例子 [DEBUG] 27 一月 03:47:26.005 下午 DefaultQuartzScheduler_Worker-2 [priv.dengjl.my_quartz.job.EchoJob] echo: 入门例子 [DEBUG] 27 一月 03:47:28.001 下午 DefaultQuartzScheduler_Worker-3 [priv.dengjl.my_quartz.job.EchoJob] echo: 入门例子 [DEBUG] 27 一月 03:47:30.001 下午 DefaultQuartzScheduler_Worker-4 [priv.dengjl.my_quartz.job.EchoJob] echo: 入门例子 [DEBUG] 27 一月 03:47:32.000 下午 DefaultQuartzScheduler_Worker-5 [priv.dengjl.my_quartz.job.EchoJob] echo: 入门例子 [DEBUG] 27 一月 03:47:34.001 下午 DefaultQuartzScheduler_Worker-6 [priv.dengjl.my_quartz.job.EchoJob] echo: 入门例子 [DEBUG] 27 一月 03:47:34.511 下午 main [priv.dengjl.my_quartz.scheduler.Example1] 调度器20秒后停止,shutdown入参:true,让任务调度完