定時器 Quartz Java

 

一、幾種任務調度的 Java 實現方法與比較  http://www.oschina.net/question/129540_28053  //特此感謝這篇文章的做者,我很喜歡這篇文章,裏邊介紹了好多關於目前定時器在工程中的使用,我總結就是多任務和單任務的模式使用,多任務不定時操做用quartz  單任務用Java的timer就行。
java

二、說說 quartz的使用  (這裏我想說一個事情就是我在剛剛接觸這個東西的時候走了些彎路,也怪我粗心了,固然也是學習的一個很差的毛病sql

        首先,用quartz 的時候重要的是找對對應的包,你不能找了一個2.2 的包放到1.6的程序中看運行效果,那必然會出錯的。express

        其次,用新包或者舊包哪一個好,這個看我的而言了,舊包須要倒入好幾個,而新包只須要兩個 見案例 (寫下這篇文章時候是 2014-06-13 18:13),可是舊包好理解,更接近Java程序的運行理解,可是新包封裝的更上一層,你能看到的東西不多,只是循序漸進的用它就能夠了  各有利弊 看你習慣怎麼用了。學習

        最後,實在以爲費勁就去找官網,下載帶有案例的包,你照貓畫虎總會吧,多試試,天然就明白怎麼回事了ui

PS: 對於quartz來講最重要的是expression的設置,這個表達式的設置你能夠找官網上去看也能夠直接去search,仍是那句話多試試不就出來了。spa

如下是我給出的案例. .net

        包:code

        Java程序1orm

package com.cibsolar.ey.timer;

import java.util.Date;

import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class EyCronTrigger {
    public void run() throws Exception {
        SchedulerFactory sf = new StdSchedulerFactory();
	Scheduler sched = sf.getScheduler();

	//隔年執行任務  能夠根據須要創建多個任務
	System.out.println("------- Scheduling Jobs ----------------");
	JobDetail job = JobBuilder.newJob(EyTask.class).withIdentity("trigger1","gourp1").build();
	CronTrigger trigger = (CronTrigger) TriggerBuilder.newTrigger()
	    .withIdentity("trigger1", "group1").withSchedule(
		CronScheduleBuilder.cronSchedule("59 59 23 31 12 ?")).build();
	Date ft = sched.scheduleJob(job, trigger);
	System.out.println(job.getKey()+" execute time at:"+ft+"|| Execute expression:"+ trigger.getCronExpression());
		
	System.out.println("------- Starting Scheduler ----------------");
	    sched.start();
	System.out.println("------- Started Scheduler -----------------");
	}
}

 Java程序2  ci

package com.cibsolar.ey.timer;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

import com.cibsolar.ey.db.DBConnection;
import com.cibsolar.ey.util.GetTable;

public class EyTask  implements Job{
	public void execute(JobExecutionContext context)throws JobExecutionException {
	
	//寫入你須要執行的代碼
	}
    }

 Java程序3

public static void main(String[] args) {
    EyCronTrigger example = new EyCronTrigger();
    try {
        example.run();
    } catch (Exception e) {
	// TODO Auto-generated catch block
	System.out.println("Scheduler run :" +e.toString());
    }
 }