定时器,简单记录

来源:互联网 发布:淘宝商城女装秋装外套 编辑:程序博客网 时间:2024/06/07 15:01

定时器学习笔记,记录一下。
这里使用的jar包是:quartz-all-1.6.0 jar
使用定时器的jar时,需要引用其他的依赖包
com.springsource.org.apache.commons.beanutils-1.8.0.jar
com.springsource.org.apache.commons.collections-3.2.1.jar
com.springsource.org.apache.commons.digester-1.8.1.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
jta-1.1.jar
quartz-all-1.6.0.jar
才能正常的启动。

package com.lsh.utils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import org.quartz.CronTrigger;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SchedulerFactory;import org.quartz.impl.StdSchedulerFactory;public class SchedulerJod {    /**     * 添加一个定时任务     * @param jobName     * @param jobGroupName     * @param triggerName     * @param triggerGroupName     * @patam className     * @param time     * @throws SchedulerException      */    public boolean addJob(String jobName,String jobGroupName,String triggerName,            String triggerGroupName,String className,String time) throws SchedulerException{        Scheduler scheduler = new StdSchedulerFactory().getScheduler();//真实的开发工程中,用注解注入scheduler,或者用xml配置文件获取bean        boolean flag = false;        try {            Class<?> clazz = Class.forName(className);            JobDetail jobDetail = new JobDetail(jobName, jobGroupName, clazz);            CronTrigger cronTrigger = new CronTrigger(triggerName, triggerGroupName);            cronTrigger.setCronExpression(time);            scheduler.scheduleJob(jobDetail, cronTrigger);            if(!scheduler.isShutdown()){                System.out.println("scheduler 的状态为--->"+scheduler.isShutdown());                scheduler.start();                flag = true;            }        } catch (ClassNotFoundException e) {            System.out.println("启动定时任务失败");            e.printStackTrace();        } catch (ParseException e) {            System.out.println("启动定时任务失败");            e.printStackTrace();        }        return flag;    }    /**     * 批量插入任务job     * @param list 任务列表list集合     */    public void startJob(List<TaskJob> list){        if(list == null || list.size() == 0){            System.out.println("无定时队列");            return;         }        for(TaskJob taskJob : list){            String jobName = taskJob.getJobName();            String jobGroupName = taskJob.getJobGroupname();            String className = taskJob.getClassName();            String cronExpression = taskJob.getCronExpression();            try {                boolean flag = addJob(jobName, jobGroupName, jobName+"Trigger",jobGroupName+"Trigger" , className, cronExpression);                if(flag){                    System.out.println(jobName+"插入任务池成功!");                }else{                    System.out.println("插入任务池失败");                }            } catch (SchedulerException e) {                e.printStackTrace();            }        }    }    /**     * 移除定时任务,使用默认组名     * @param args     * @throws SchedulerException     * @throws ParseException     * @throws InterruptedException     */    public void removeJob(String jobName, String jobGroup) throws SchedulerException{        Scheduler scheduler = new StdSchedulerFactory().getScheduler();        scheduler.pauseTrigger(jobName+"Trigger", jobGroup);        scheduler.deleteJob(jobName+"Trigger", jobGroup);        System.out.println("移除任务成功");    }    /**     * 暂停所有的任务     * @param args     * @throws SchedulerException     * @throws ParseException     * @throws InterruptedException     */    public void pauseAllJob(){        try {            Scheduler scheduler = new StdSchedulerFactory().getScheduler();            scheduler.pauseAll();        } catch (SchedulerException e) {            e.printStackTrace();        }    }    /**关闭所有的定时任务     * @throws SchedulerException */    public void shutdownJobs() throws SchedulerException{        Scheduler scheduler = new StdSchedulerFactory().getScheduler();        if(!scheduler.isShutdown()){            scheduler.shutdown();        }        System.err.println("关闭定时任务成功!");    }    /**     * 唤醒所有的任务     * @param args     * @throws SchedulerException     * @throws ParseException     * @throws InterruptedException     */    public void modifyJobTime(String jobName,String time) throws SchedulerException{        Scheduler scheduler = new StdSchedulerFactory().getScheduler();        CronTrigger trigger = (CronTrigger) scheduler.getTrigger(jobName, null);        if(trigger == null){            return;        }        String oldTime = trigger.getCronExpression();        if(!oldTime.equalsIgnoreCase(time)){            JobDetail jobDetail = scheduler.getJobDetail(jobName, "");            Class ObjJobClass = jobDetail.getJobClass();            removeJob(jobName, "jobGroup");            addJob(jobName, "jobGroupName", "triggerName", "triggerGroupName", "className", "oldTime");        }    }    public static void main(String[] args) throws SchedulerException,     ParseException, InterruptedException {        //Scheduler scheduler = new StdSchedulerFactory()        SchedulerFactory schedulerFactory = new StdSchedulerFactory();        Scheduler scheduler = schedulerFactory.getScheduler();        String date = new SimpleDateFormat("yyyy-MM-dd hh:MM:ss").format(new Date());        String job_name ="定时任务"+date;        JobDetail jobDetail = new JobDetail(job_name, "testJobGroup", quartzJobTest.class);        CronTrigger cronTrigger = new CronTrigger(job_name+"Trigger", "testJobGroup");        cronTrigger.setCronExpression("1/1 * * * * ?");        scheduler.scheduleJob(jobDetail, cronTrigger);        if(!scheduler.isShutdown()){            System.out.println("scheduler状态---》"+!scheduler.isShutdown());            scheduler.start();        }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               Thread.sleep(6000);        /*scheduler.pauseTrigger(job_name+"Trigger", "testJobGroup");//暂停触发器        scheduler.unscheduleJob(job_name+"Trigger", "testJobGroup");//移除触发器        scheduler.deleteJob(job_name, "testJobGroup");        System.out.println(job_name + "--->删除任务成功!!");        */        jobDetail = new JobDetail(job_name+"Test1", "testJobGroup", quartzJobTest.class);        cronTrigger = new CronTrigger(job_name+"test1"+"Tigger", "testJobGroup");        cronTrigger.setCronExpression("1/1 * * * * ?");        scheduler.scheduleJob(jobDetail, cronTrigger);        if(!scheduler.isShutdown()){            System.out.println("scheduler状态---》"+!scheduler.isShutdown());            scheduler.start();        }        //暂停任务job_name+test任务        Thread.sleep(5 * 1000);        scheduler.pauseJob(job_name+"Test1", "testJobGroup");        System.out.println("---------------------------------------------暂停任务成功!!!");        Thread.sleep(5 * 1000);//      唤醒job_name+test任务        scheduler.resumeJob(job_name+"Test1","testJobGroup" );        System.out.println("------------------------------------------------唤醒任务成功!!!!");        //    }}