Quartz初识以及简单运用

1、初识Quartz

1.1、概述

  • Quartz是一个完全由Java编写的一个开源的任务调度框架,说的简单点就是开发人员可以通过Quartz根据时间间隔调度任务,例如:

    • 每隔一小时命令程序执行一个任务
    • 每个月命令程序执行一个任务
    • 指定某月末日命令程序执行一个任务
    • ……
  • Quartz下载地址:http://www.quartz-scheduler.org/downloads/

1.2、Quartz API

1.2.1、Scheduler——与scheduler交互的主要API;

  Scheduler的生命周期从SchedulerFactory创建它时开始,到Scheduler调用showdown()方法结束。Scheduler只有在调度start()方法后才会真正的触发trigger(执行job)。Scheduler被创建后可以增加、删除、和列举Job和Trigger,以及执行其它与调度相关的操作。

1.2.2、Job——由调度程序执行的任务需要实现的接口

1.2.3、JobDetail——定义Job的实例

1.2.4、Trigger——触发Job的执行

1.2.5、JobBuilder——定义创建JobDetail实例的接口

1.2.6、TriggerBuilder——定义创建Trigger实例的接口

2、Hello Quartz 简单运用

2.1、首先实现一个简单的小demo《Hello Quartz!》,具体需求:每隔5秒通过控制台输出一句“hello quartz!”;

2.2、代码

 1 package com.xxw.test;
 2
 3 import org.quartz.Job;
 4 import org.quartz.JobExecutionContext;
 5 import org.quartz.JobExecutionException;
 6
 7 public class MyJob implements Job{
 8
 9     @Override
10     public void execute(JobExecutionContext arg0) throws JobExecutionException {
11         System.out.println("hello quartz!");
12     }
13
14 }
 1 package com.xxw.test;
 2
 3 import static org.quartz.JobBuilder.newJob;
 4 import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
 5 import static org.quartz.TriggerBuilder.newTrigger;
 6
 7 import org.quartz.JobDetail;
 8 import org.quartz.Scheduler;
 9 import org.quartz.Trigger;
10 import org.quartz.impl.StdSchedulerFactory;
11
12 public class HellowQuartz {
13
14     public static void main(String[] args) {
15         try {
16             // 定义JobDetail
17             JobDetail job = newJob(MyJob.class) // 定义Job类为MyJob类,这个类是任务逻辑类
18                     .withIdentity("job1", "group1") // 定义name/group
19                     .build();
20
21             // 定义一个Trigger
22             Trigger trigger = newTrigger()
23                     .withIdentity("trigger1", "group1") // 定义name/group
24                     .startNow() // 一旦加入scheduler,立刻生效
25                     .withSchedule(
26                             simpleSchedule() // 使用simpleSchedule
27                             .withIntervalInSeconds(5) // 每隔5秒执行一次
28                             .repeatForever()) // 一直执行
29                     .build();
30
31             // 实例 Schedule 调度器
32             Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
33             // 添加调度
34             scheduler.scheduleJob(job, trigger);
35             // 启动
36             scheduler.start();
37
38         } catch (Exception e) {
39             e.printStackTrace();
40         }
41     }
42 }

2.3、结果

原文地址:https://www.cnblogs.com/duniang/p/8797101.html

时间: 2024-10-09 03:18:05

Quartz初识以及简单运用的相关文章

iOS流布局UICollectionView系列一——初识与简单使用UICollectionView

iOS流布局UICollectionView系列一--初识与简单使用UICollectionView 一.简介 UICollectionView是iOS6之后引入的一个新的UI控件,它和UITableView有着诸多的相似之处,其中许多代理方法都十分类似.简单来说,UICollectionView是比UITbleView更加强大的一个UI控件,有如下几个方面: 1.支持水平和垂直两种方向的布局 2.通过layout配置方式进行布局 3.类似于TableView中的cell特性外,Collecti

Quartz 2D绘制简单图形

在Quartz 2D中,绘图是通过图形上下文进行绘制的,以下绘制几个简单的图形 首先先创建一个QuartzView.swift文件继承自UIView,然后实现drawRect方法: import UIKit class QuartzView: UIView { // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance duri

热词统计以及Quartz.net的简单使用

一.热词统计 方案一: 设计一个表:ID       KeyWord     Count 当用户再输入框中查询的时候,我们就往表中插入数据,在插入之前首先判断是否已经存在keyword,存在的话,让Count+1 这种方案非常费时 方案二: 表 :ID      Keyword     Count 每次用户输入的时候直接插入,不需要判断是否存在,当进行热词展示的时候,通过Group By语句进行统计 同样比较费时 方案三: 表一明细表:ID   Keyword 表二汇总表:ID   KeyWor

任务调度~Quartz.net实现简单的任务调试

任务调度类似于sqlserver中的作业,即按周期性执行某个程序,代码段,或者某种服务,在JAVA环境中出现了Quartz,它可以简单的实现任务的调试,而像lucene一样,它会有对于的.net版本,Quartz.net,今天我们来做一个简单的实验,其时很简单的实验: 环境:.net4.0+mvc3 功能:每1分钟去向一个文件里写日志(当然,如果你要调用某个服务,只要让它实现IJob接口即可. 所需要的程序集 首先在WEB.Config的configuration节点里做一些必要的配置 1 <c

SpringBoot整合Quartz定时任务 的简单实例 2

(1)什么是Quartz?(2)Quartz的特点:(3)Quartz专用词汇说明:(4)Quartz任务调度基本实现原理: 接下来看下具体的内容: (1)什么是Quartz? Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制.Quartz允许开发人员根据时间间隔来调度作业.它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联.简单地创建一个org.quarz.Job接口的Java类. (2)Quartz的特点: 作

初识多态 简单理解

多态是java 语言三大特征之一(继承.多态.封装    *抽象*) 经过一节课的学习简单的理解是这样,字面意思一个事物多种状态. java字面意思:相同的行为 不同的实现 多态体现  重载 以及子类的方法被从写上. 多态的分类:静态多态已确实,动态多态编未知 具体是的静态不是指用static修饰的,而是指在编译时已经确定的输出或者是效果  体现在重载上面 动态多态是指编译的时候不知道不确定输出结果,只有运行才知道结果   这种情况被称为动态多态  体现在动态捆绑和重写 动态绑定  父类的引用指

初识最简单的android application目录结构

认识android目录结构非常重要.犹如单词对于学习一门语言一样重要一样.在今后学习android 内核源码时候,也是最开始需要先熟悉android源码目录结构一样.刚开始学习目录结构,自然有可能比较枯燥,这可以在后期不断熟悉的时候,进行不断的总结顾名思义(src, source code)该文件夹是放项目的源代码的.打开HelloWorld.java文件会看到如下代码:. 最简单的helloworld应用程序目录结构: 1,src目录: src:source code 该文件夹是放项目的源代码

spring 整合quartz的方式——简单介绍

一.继承QuartzJobBean,重写executeInternal方法 <bean name="statQuartzJob" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.cn.zero.QuartzTask"> </property> &

Celery初识及简单实例

Celery是一个"自带电池"的任务队列.易于使用,可以轻易入门,它遵照最佳实践设计,使产品可以扩展,或与其他语言集成,并且它自带了在生产环境中运行这样一个系统所需的工具和支持.本文介绍基础部分: 选择和安装消息传输方式(中间人). 安装Celery并创建一个任务 运行职程并调用任务 追踪任务在不同状态间的迁移,并检视返回值 一.选择中间人 Celery需要一个发送和接收消息的解决方案,其通常以独立服务形式出现,称为消息中间人. 可行的选择包括: RabbitMQ RabbitMQ功能