最近項目中由於要鏈接許多硬件設備,硬件服務於咱們的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); } }
好了 簡單的定時策略就作成了