最近项目中由于要链接许多硬件设备,硬件服务于咱们的server服务是经过socket进行通讯,原本有一个默认的定时器策略,于硬件交换数据,java
如今有这么一个需求,须要人工维护 server和硬件通讯的频率 ,而后想到了 Quartz;框架
因为我也是第一次接触这个框架,边写边学吧,项目是使用的maven进行管理 quartz的版本是2.2.1 由于我发现这个版本被引用的概率是最高的 ,而后咱们也用吧。socket
<!--定时任务用到的--> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.1</version> </dependency>
看看用到的类和接口maven
Schedule 统一的调度接口 多有的定时任务都是受此接口进行控制 ide
JobDetail 这个接口是保存定时任务的,具体的业务任务都将被此接口封装ui
Job 任务工做接口 具体实现业务的类都要实现此接口 而且实现他的execute(JobExecutionContext jobExecutionContext)方法spa
Trigger 定时接口 封装你的的定时策略code
而后贴一下JOB的实现类server
import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * 具体任务类 * 每一个具体执行任务的类 都须要实现job接口 并 复写执行方法 * Created by Administrator on 2017/3/1. */ public class MyJob implements Job { //计数 Integer num = 0; //被执行的任务 @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { num += 1; System.out.println("执行第" + num + "次任务"); //打印结果都是相同的 说明每次执行任务的job类都是经过反射生成的一个全新的对象 //console--------------------- // 执行第1次任务 // 执行第1次任务 // 执行第1次任务 // 执行第1次任务 // 执行第1次任务 // 执行第1次任务 // 执行第1次任务 } }
而后是调用此jOB对象
import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; import java.text.ParseException; /** * * 任务调度类 * 一、须要先获得一个Schedule实例 * 二、而后建立一个包含任务信息的JobDetail * 三、最后建立一个Trigger管理任务的执行 * Created by Administrator on 2017/3/1. */ public class MyQuartzScheduling { public static void main(String[] args) throws SchedulerException, ParseException { //获取调度类实例 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); //启动 scheduler.start(); //初始化包含调度工做的实例 JobDetail jobDetail= JobBuilder.newJob(MyJob.class) //工做名 工做组 .withIdentity("test","group") .build(); // 表达式调度构建器 让他每两秒执行一次 CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule("0/2 * * * * ?"); Trigger trigger= TriggerBuilder .newTrigger() //工做名 工做组 .withIdentity("trigger","group") .startNow() .withSchedule(scheduleBuilder) .build(); scheduler.scheduleJob(jobDetail,trigger); } }
好了 简单的定时策略就作成了