定时器 Quartz Java

北城余情 提交于 2019-12-06 06:36:02

 

1、几种任务调度的 Java 实现方法与比较  http://www.oschina.net/question/129540_28053  //特此感谢这篇文章的作者,我很喜欢这篇文章,里边介绍了好多关于目前定时器在工程中的使用,我总结就是多任务和单任务的模式使用,多任务不定时操作用quartz  单任务用Java的timer就行。

2、说说 quartz的使用  (这里我想说一个事情就是我在刚刚接触这个东西的时候走了些弯路,也怪我粗心了,当然也是学习的一个不好的毛病

        首先,用quartz 的时候重要的是找对对应的包,你不能找了一个2.2 的包放到1.6的程序中看运行效果,那必然会出错的。

        其次,用新包或者旧包哪个好,这个看个人而言了,旧包需要倒入好几个,而新包只需要两个 见案例 (写下这篇文章时候是 2014-06-13 18:13),但是旧包好理解,更接近Java程序的运行理解,但是新包封装的更上一层,你能看到的东西很少,只是按部就班的用它就可以了  各有利弊 看你习惯怎么用了。

        最后,实在觉得费劲就去找官网,下载带有案例的包,你照猫画虎总会吧,多试试,自然就明白怎么回事了

PS: 对于quartz来说最重要的是expression的设置,这个表达式的设置你可以找官网上去看也可以直接去search,还是那句话多试试不就出来了。

以下是我给出的案例.

        包:

        Java程序1

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  

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());
    }
 }



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!