1 我们使用maven项目
2 创建一个job类,在execute()方法里写上业务逻辑代码。
3 在另外一个类中创建触发器,调度器,并且绑定job。
首先在项目的pom.xml引入需要的jar包。
<dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.2.1</version> </dependency>
创建一个job
package quartz; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class JobClass implements Job { public void execute(JobExecutionContext arg0) throws JobExecutionException { Date date=new Date(); SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("当前时间为:"+sf.format(date)); // 编写业务逻辑 System.out.println("hello Quartz"); } }
再创建另外一个类
package quartz; import java.text.SimpleDateFormat; import java.util.Date; 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 SchedulerClass { public static void main(String[] args) throws SchedulerException { // 创建一个JobDetail实例 将该实例与JobClass绑定,JobDetail是由Builder模式来创建的,JobDetail是来绑定job的。 // withIdentity 创建唯一的标识 JobDetail jobDetail = JobBuilder.newJob(JobClass.class).withIdentity("job").build(); // 创建一个Tigger实例,定义 job立即执行,并每隔一段时间重复执行,每隔5秒中执行一次 Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger").startNow() .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever()).build(); // 创建一个Scheduler实例, Scheduler是由工厂模式来创建的 so SchedulerFactory factory = new StdSchedulerFactory(); Scheduler scheduler = factory.getScheduler(); scheduler.start(); Date date = new Date(); SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("当前时间为:" + sf.format(date)); //调度器调用任务和触发器,scheduler将job,trigger绑定在一起。 scheduler.scheduleJob(jobDetail, trigger); } }
但是这样看起来很复杂的!