zoukankan      html  css  js  c++  java
  • 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的集群调度解决方案

        

         

  • 相关阅读:
    节点和坐标系
    精灵类
    导演类
    部分辅助宏
    妥善使用autorelease()方法
    内存管理笔记
    向eclipse中的项目导入jar包(作为library引用和放入web-inf/lib下的两种方法和区别)
    Request processing failed; nested exception is java.lang.NullPointerException
    getRequestURI、getReuqestURL的区别【转】
    tomcat部署javaWeb项目,界面样式都没有加载
  • 原文地址:https://www.cnblogs.com/kimobolo/p/7061155.html
Copyright © 2011-2022 走看看