java Quartz任务调度器

1、quarz对java1.5实现的简单调度做了封装

/**
     * quartz对任务调度进了高度抽象: 1调度器;2任务;3触发器
     * Job接口(任务):定义需要调度的任务
     * JobDetail(任务实例):Job在创建时,不是直接接受一个job实例,而是接受一个job实现类, jobdetail实现了这一个角色
     * Trigger:触发器
     * Calendar:更仔细的触发器
     * Scheduler:Quartz运行容器,任务和触发器可以注册到容器中
     * ThreadPool:容器通过一个共享线程池,提高运行效率
     *
     * @param args
     */

2、简单实现

  

package java_source_codes_quartz;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleTrigger;
import org.quartz.impl.JobDetailImpl;
import org.quartz.impl.StdSchedulerFactory;
import org.quartz.impl.triggers.SimpleTriggerImpl; public class SimpleTriggerRunner {
public static void main(String[] args) throws SchedulerException {
//创建一个jobdetail实例
JobDetail jobDetail = new JobDetailImpl("job1_1","jgroup1", SimpleJob.class);
//创建一个触发器实例
//还有更详细的触发器:CronTrigger
SimpleTrigger simpleTrigger = new SimpleTriggerImpl("tigger1_1", "tgroup1"); SchedulerFactory schFactory = new StdSchedulerFactory();
Scheduler scheduler = schFactory.getScheduler();
scheduler.scheduleJob(jobDetail, simpleTrigger);
scheduler.start(); } }
package java_source_codes_quartz;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class SimpleJob implements Job { public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
System.out.println(arg0.getTrigger().getCalendarName());
System.out.println(arg0.getJobRunTime());
System.out.println(arg0.getFireInstanceId());
System.out.println(arg0.getFireTime());
System.out.println(arg0.getJobDetail());
System.out.println(arg0.toString());
} }

这是一个简单实现,大概知道用quartz怎么去实现一个调度,具体在实际环境中可以用spring的bean实例的初始化做一个lisenter监听时间。实现调度。spring也对quartz做了集成处理,但是本人觉得

写代码不是写配置文件,不是配置文件能解决需要重复造*的工作,我一般不会用配置文件。

3、调度器的集群实现方案

1、将调度事件放在一*立的服务器上,不受集群环境影响

2、实现quartz的集群调度解决方案

上一篇:layer 弹出层 不居中


下一篇:常见的爬虫分析库(4)-爬虫之PyQuery