`
maosheng
  • 浏览: 566261 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Quartz使用经典实现

    博客分类:
  • Java
阅读更多
package com.maosheng.test;

import java.text.ParseException; 
import org.quartz.CronTrigger; 
import org.quartz.Job; 
import org.quartz.JobDetail; 
import org.quartz.Scheduler; 
import org.quartz.SchedulerException; 
import org.quartz.SchedulerFactory; 
import org.quartz.Trigger; 
import org.quartz.impl.StdSchedulerFactory; 

public class QuartzManager {

private static SchedulerFactory sf = new StdSchedulerFactory(); 
    private static String JOB_GROUP_NAME = "group1"; 
    private static String TRIGGER_GROUP_NAME = "trigger1"; 
    
     
    /** 
     *  添加一个定时任务,使用默认的任务组名,触发器名,触发器组名
     * @param jobName 任务名
     * @param job     任务
     * @param time    时间设置,参考quartz说明文档
     * @throws SchedulerException
     * @throws ParseException
     */ 
    public static void addJob(String jobName,Job job,String time)  
                                throws SchedulerException, ParseException{ 
        Scheduler sched = sf.getScheduler(); 
        JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());//任务名,任务组,任务执行类 
        //触发器 
        CronTrigger  trigger =  
             new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组 
        trigger.setCronExpression(time);//触发器时间设定 
        sched.scheduleJob(jobDetail,trigger); 
        //启动 
        if(!sched.isShutdown()) 
           sched.start(); 
    } 
     
    /**
     * 添加一个定时任务
     * @param jobName 任务名
     * @param jobGroupName 任务组名
     * @param triggerName  触发器名
     * @param triggerGroupName 触发器组名
     * @param job     任务
     * @param time    时间设置,参考quartz说明文档
     * @throws SchedulerException
     * @throws ParseException
     */ 
    public static void addJob(String jobName,String jobGroupName, 
                              String triggerName,String triggerGroupName, 
                              Job job,String time)  
                                throws SchedulerException, ParseException{ 
        Scheduler sched = sf.getScheduler(); 
        JobDetail jobDetail = new JobDetail(jobName, jobGroupName, job.getClass());//任务名,任务组,任务执行类 
        //触发器 
        CronTrigger  trigger =  
             new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组 
        trigger.setCronExpression(time);//触发器时间设定 
        sched.scheduleJob(jobDetail,trigger); 
        if(!sched.isShutdown()) 
           sched.start(); 
    } 
     
    /** 
     * 修改一个任务的触发时间(使用默认的任务组名,触发器名,触发器组名)
     * @param jobName
     * @param time
     * @throws SchedulerException
     * @throws ParseException
     */ 
    public static void modifyJobTime(String jobName,String time)  
                                   throws SchedulerException, ParseException{ 
        Scheduler sched = sf.getScheduler(); 
        Trigger trigger =  sched.getTrigger(jobName,TRIGGER_GROUP_NAME); 
        if(trigger != null){ 
            CronTrigger  ct = (CronTrigger)trigger; 
            ct.setCronExpression(time); 
            sched.resumeTrigger(jobName,TRIGGER_GROUP_NAME); 
        } 
    } 
     
    /**
     * 修改一个任务的触发时间
     * @param triggerName
     * @param triggerGroupName
     * @param time
     * @throws SchedulerException
     * @throws ParseException
     */ 
    public static void modifyJobTime(String triggerName,String triggerGroupName, 
                                     String time)  
                                   throws SchedulerException, ParseException{ 
        Scheduler sched = sf.getScheduler(); 
        Trigger trigger =  sched.getTrigger(triggerName,triggerGroupName); 
        if(trigger != null){ 
            CronTrigger  ct = (CronTrigger)trigger; 
            //修改时间 
            ct.setCronExpression(time); 
            //重启触发器 
            sched.resumeTrigger(triggerName,triggerGroupName); 
        } 
    } 
     
    /**
     * 移除一个任务(使用默认的任务组名,触发器名,触发器组名)
     * @param jobName
     * @throws SchedulerException
     */ 
    public static void removeJob(String jobName)  
                                throws SchedulerException{ 
        Scheduler sched = sf.getScheduler(); 
        sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器 
        sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器 
        sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务 
    } 
     
    /**
     * 移除一个任务
     * @param jobName
     * @param jobGroupName
     * @param triggerName
     * @param triggerGroupName
     * @throws SchedulerException
     */ 
    public static void removeJob(String jobName,String jobGroupName, 
                                 String triggerName,String triggerGroupName)  
                                throws SchedulerException{ 
        Scheduler sched = sf.getScheduler(); 
        sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器 
        sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器 
        sched.deleteJob(jobName,jobGroupName);//删除任务 
    } 

}


package com.maosheng.test;

import java.text.SimpleDateFormat; 
import java.util.Date; 
 
import org.quartz.Job; 
import org.quartz.JobExecutionContext; 
import org.quartz.JobExecutionException; 
 
public class TestJob implements Job { 

    SimpleDateFormat DateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
    Date d = new Date(); 
    String returnstr = DateFormat.format(d);   
 
    public void execute(JobExecutionContext arg0) throws JobExecutionException { 
        // TODO Auto-generated method stub 
        System.out.println(returnstr+"★★★★★★★★★★★"); 
    } 
 


package com.maosheng.test;

import java.text.SimpleDateFormat; 
import java.util.Date; 


public class QuartzTest {

    public static void main(String[] args) { 
        // TODO Auto-generated method stub 
        SimpleDateFormat DateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); 
        Date d = new Date(); 
        String returnstr = DateFormat.format(d);         
         
        TestJob job = new TestJob(); 
        String job_name ="11"; 
        try { 
            System.out.println(returnstr+ "【系统启动】"); 
            QuartzManager.addJob(job_name,job,"0/2 * * * * ?"); //每2秒钟执行一次 
             
//            Thread.sleep(10000); 
//            System.out.println("【修改时间】"); 
//            QuartzManager.modifyJobTime(job_name,"0/10 * * * * ?"); 
//            Thread.sleep(20000); 
//            System.out.println("【移除定时】"); 
//            QuartzManager.removeJob(job_name); 
//            Thread.sleep(10000); 
//             
//            System.out.println("/n【添加定时任务】"); 
//            QuartzManager.addJob(job_name,job,"0/5 * * * * ?"); 
             
        }  catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 

}
分享到:
评论

相关推荐

    ASP.NET使用Quartz.NET实现定时任务调度

    Quartz.NET则是一个开源的作业调度库,适用于.NET平台,能够帮助开发者在.NET应用中实现复杂的时间驱动任务。结合使用Quartz.NET和TopShelf,我们可以构建一个在Windows服务中运行的定时任务调度系统。 Quartz.NET...

    SpringBoot 整合Quartz(集群)实现定时任务调度

    SpringBoot整合Quartz实现定时任务调度是企业级应用中常见的需求,主要用于自动化执行某些周期性的任务,例如数据备份、报表生成、系统维护等。Quartz是一个功能强大的开源作业调度框架,能够灵活地定义任务和调度...

    Quartz 定时WebForm和WinForm使用的dll

    这个标题“Quartz 定时WebForm和WinForm使用的dll”暗示了我们将在WebForm和WinForm应用中使用Quartz来实现定时功能。在.NET环境中,Quartz通过引入特定的DLL文件来实现其功能。 首先,我们要理解什么是DLL...

    spring 集成quartz 用数据库实现quartz的集群

    总结来说,Spring集成Quartz并使用数据库实现集群的关键在于: 1. 添加Quartz和Spring支持的依赖。 2. 在Spring配置文件中创建`SchedulerFactoryBean`,配置数据源和Quartz属性。 3. 配置`quartz.properties`,指定...

    使用Quartz实现定时功能

    ### 使用Quartz实现定时功能 #### 一、Quartz简介 Quartz是一个全面的、开源的作业调度器,被广泛应用于Java应用程序中进行任务调度。Quartz提供了强大的调度能力,可以满足不同场景的需求,比如定时执行任务、...

    定时任务quartz实现分组串行并行动态配置

    本篇文章将深入探讨如何利用Quartz实现定时任务的分组、串行和并行动态配置。 首先,理解Quartz的核心概念是必要的。`Job`是执行任务的基本单元,`Trigger`则决定了何时触发Job。Quartz提供了`Scheduler`来管理和...

    Quartz 线程池

    Quartz 提供了多种方式来配置线程池,主要通过 `org.quartz.SchedulerFactory` 和 `org.quartz.ThreadPool` 接口实现。以下是一些常见的配置项: - **ThreadPoolSize**:设置线程池的大小,即最大并发执行的 Job ...

    quartz实现动态任务定时调度

    Quartz 是一个开源的作业调度框架,用于在 Java 应用程序中实现复杂的时间调度任务。它提供了丰富的 API,使得开发者能够轻松地定义、安排和管理任务。在本例中,我们将探讨如何利用 Quartz 实现动态任务定时调度,...

    使用quartz实现不重启服务器修改自定义配置的示例

    这个示例就是关于如何在不重启服务器的情况下,利用Quartz实现自定义配置的更改。 首先,我们需要了解Quartz的基本概念: 1. **Job**:是实际执行的任务,实现了`org.quartz.Job`接口。 2. **Trigger**:定义了任务...

    Java中使用Quartz实现任务自动调度的经典例子!

    这个经典例子展示了如何在Java项目中集成并使用Quartz进行任务自动调度。通过以下内容,我们将深入理解Quartz的基本概念、配置、作业与触发器的创建,以及如何在实际应用中使用它们。 首先,我们需要了解Quartz的...

    Quartz开发使用说明文档

    例如,使用Quartz可以实现定时任务、批处理、事件触发等场景。 注意事项 在使用Quartz时需要注意以下几点: * 任务状态:Quartz提供了多种任务状态,包括waiting、running、completed等。 * 触发器:Quartz提供了...

    Spring+Quartz实现任务调度的小例子

    Spring框架和Quartz是两个广泛使用的工具,它们可以协同工作以实现复杂和灵活的任务调度。本篇文章将深入探讨如何使用Spring与Quartz结合来创建一个任务调度的小例子。 首先,Spring是一个开源的Java企业级应用开发...

    java定时任务quartz的基本实现

    Quartz是Java领域中一个广泛使用的开源任务调度框架,它提供了丰富的功能来满足各种定时任务的需求。本篇文章将深入探讨Quartz的基本实现,以及如何在Java项目中运用它。 首先,Quartz的核心概念包括作业(Job)、...

    quartz整合springbatch动态集群定时实现mysql参考

    在这个“quartz_springbatch_dynamic”项目中,我们将看到如何将这两个强大的工具结合起来,以实现动态集群环境中的定时任务执行,并使用MySQL作为数据存储。 Quartz是一个开源的作业调度框架,允许开发者创建、...

    Springboot整合Quartz实现定时任务数据库动态配置

    在`JobService`类中,我们使用Quartz的API来操作任务,例如`scheduler.scheduleJob()`来安排任务,`scheduler.pauseJob()`和`scheduler.resumeJob()`来暂停或恢复任务,`scheduler.deleteJob()`来删除任务。...

    spring的quartz使用实例

    以下是对Spring整合Quartz使用实例的详细说明: 1. **Quartz简介** Quartz是一个强大的、完全开源的作业调度框架,它支持复杂的调度策略,如按日期、时间间隔或自定义表达式执行。Quartz可以在Java应用中作为独立...

    Java使用quartz实现任务调度定时任务

    本篇文章将深入探讨如何使用Quartz在Java应用程序中实现任务调度。 Quartz库提供了一个灵活的API,可以创建、调度和管理任务,这些任务被称为Job。每个Job都与一个Trigger关联,Trigger定义了何时启动Job。在Java...

    Quartz使用小结

    这个小结将深入探讨Quartz的核心概念、使用场景以及如何与Spring框架集成。 一、Quartz简介 Quartz是由Caledonia Software公司开发的Java定时任务库,它提供了一种高度可配置的方式来安排和执行工作。Quartz支持...

    quartz通过cron实现web项目定时器

    Quartz是一款强大的、开源的作业调度框架,常用于Java应用程序中,包括Web项目,来实现定时任务的执行。本文将详细介绍如何使用Quartz结合cron表达式在Web项目中创建一个定时器。 首先,理解Quartz的基本概念至关...

Global site tag (gtag.js) - Google Analytics