关于为什么要使用任务调度我就不说了吧,当你看到这篇文章的时候相信你已经知道了。
快速入门,先说说任务调度三大核心类:JobDetail Trigger Scheduler
下面一个一个介绍
-
JobDetail:
从字面意思来看,JobDetail翻译过来是“工作详述”的意思,何为工作详述:创建一个任务当然需要知道一个任务跑起来都需要什么条件吧,拿下面的代码举例子,我的JobDetail需要知道任务的名字,任务所在的分组,当然,大多数情况下我们项目需要执行的任务不是很多,我的项目里并没有做分组,用的是 Scheduler. DEFAULT_GROUP默认分组,JobDetail的构造方法不止一个,具体大家自己查看API文档。最重要的参数: PushDataJob. class 这个类是具体要执行的任务来,里面写了你要执行什么任务,比如:发送邮件任务,我的是推送数据的任务。这个参数才是JobDetail的核心。你让我做任务,我要先知道我要做的是什么吧,好的: Job. class会告诉你。下面结束说 - Trigger
直译过来是触发器,上面jobDetail接收到了job.class了,知道要做什么了,但是还没有一个时间来告诉系统什么时候做这个任务,那么好说,Trigger正是负责这个任务的,从下面的代码看,我给了Trigger最重要的一个参数 String cron 这是一个时间表达式,cron是来自UNIX的时间机智,具体不做介绍了, - Scheduler
调度器,调度器负责的是启动停止任务,管理任务。
看下面这行代码:
StdSchedulerFactory. getDefaultScheduler ().scheduleJob(jobDetail, cronTrigger);调度器负责把任务组装起来,Scheduler接收的参数是jobDetail 和 cronTrigger 时间表达式,调度器会在指定时间来执行任务 - QuartzJob.class是我要写的一个测试类,我现在要打印一条语句
所有的任务类都需要集成Job接口,重写execute方法,Scheduler会在出发时间到达的时候自动调用此方法。这里想写什么就写什么了。execute方法之负责执行任务,不会反回任何信息,官方文档有明确指示。至于任务是否执行成功,还需要我们自己写方法判断。
/**
* corn表达式的任务
* @param jobName job名字
* @param tableName 数据元
* @param cron cron表达式
* @return
*/
public static boolean addCornJob(String jobName, String tableName, String cron) {
JobDetail jobDetail = new JobDetail(jobName, Scheduler.DEFAULT_GROUP ,
PushDataJob. class );
jobDetail.getJobDataMap().put(SchedulerUtil. TABLENAME , tableName);
try {
CronTrigger cronTrigger = new CronTrigger(jobName + "Trigger" , Scheduler. DEFAULT_GROUP, cron);
StdSchedulerFactory. getDefaultScheduler().scheduleJob(jobDetail, cronTrigger);
} catch (Exception e) {
return false ;
}
return true ;
}
-----------------------------------我是分割线-----------------------------------------------
public class QuartzJob implements Job {
// static Log logger = LogFactory.getLog(ScanDirectoryJob.class);
public void execute(JobExecutionContext context)
throws JobExecutionException {
System. out .println("任务:推送执行结束" );
}
最后把我的demo贡献给大家。链接:http://download.csdn.net/detail/leilei107/7125391
我用的是1.5.6,用这么低的版本是因为1.5.6的资料比较多,其实这个版本已经足够我项目功能的需要了。高版本的类会有小小的变动。大家理解了三个核心类的意思后用什么都无所谓了。
中文手册也给了 ,链接:http://download.csdn.net/detail/leilei107/7125431
洋洋洒洒一下午写了这些,希望对大家有帮助!!!!