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的集群调度解决方案

        

         

  • 相关阅读:
    Oracle 11g R2(11.2.0.4.0)+udev搭建RAC
    在 Linux 中用 nmcli 命令绑定多块网卡
    linux 配置聚合连接team(网卡绑定) , systemd 控制
    7.linux目录结构
    6.VMware备份linux操作系统
    5.linux关机和切换运行模式
    4.linux安装
    linux网络配置知识
    3.Virtual Box的安装
    2.vmWare安装
  • 原文地址:https://www.cnblogs.com/kimobolo/p/7061155.html
Copyright © 2011-2022 走看看