Quartz学习(一)
1、下载地址:http://quartz-scheduler.org/downloads/catalog
2、quartz-2.1.5文件根目录中有很多jar包,Quartz 最核心的包就是quartz-all-2.1.5.jar,如果需要用到其他Quartz 的其他特性,可以考虑将相应的包加入到classpath中,除此之外,Quartz 还依赖一些第三方的包,那些包都放在了lib目录下,将其也全部加入到classpath中
3、在src下新建一个quartz.properties文件,该文件用来配置Quartz 的一些参数
一个简单的实例:
quartz.properties文件配置内容如下:
- org.quartz.scheduler.instanceName: QuartzTest
- org.quartz.threadPool.threadCount: 3
- org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
log4j.properties配置内容如下:
- log4j.rootLogger=INFO, stdout
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
QuartzTest.java
- package demo01;
- import org.quartz.JobBuilder;
- import org.quartz.JobDetail;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.SchedulerFactory;
- import org.quartz.SimpleScheduleBuilder;
- import org.quartz.Trigger;
- import org.quartz.TriggerBuilder;
- import org.quartz.TriggerKey;
- import org.quartz.impl.StdSchedulerFactory;
- /**
- * 每隔2秒调用一次job
- * 功能:TODO
- * 类名:QuartzTest
- * 作者:smile
- * 时间:Aug 11, 2012:3:25:46 PM
- */
- public class QuartzTest {
- public static void main(String[] args) {
- new QuartzTest().run();
- }
- public void run() {
- try {
- //Scheduler instances are produced by a SchedulerFactory
- SchedulerFactory sf = new StdSchedulerFactory();
- Scheduler scheduler = sf.getScheduler();
- //JobDetail Conveys the detail properties of a given Job instance. JobDetails are to be created/defined with JobBuilder.
- //JobBuilder无构造函数,所以只能通过JobBuilder的静态方法newJob(Class<? extends Job> jobClass)生成JobBuilder实例
- //withIdentity(String name,String group)参数用来定义jobKey,如果不设置,也会自动生成一个独一无二的jobKey用来区分不同的job
- //build()方法 Produce the JobDetail instance defined by this JobBuilder.
- JobDetail job = JobBuilder.newJob(JobTest.class).withIdentity("job1", "group1").build();
- //use TriggerBuilder to instantiate an actual Trigger
- //withIdentity(String name,String group)参数用来定义TriggerKey,如果不设置,也会自动生成一个独一无二的TriggerKey用来区分不同的trigger
- Trigger trigger = TriggerBuilder.newTrigger().withIdentity(new TriggerKey("trigger1", "group1")).startNow()
- .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever())
- .build();
- // Tell quartz to schedule the job using our trigger
- scheduler.scheduleJob(job, trigger);
- // Start up the scheduler
- scheduler.start();
- //当前主线程睡眠2秒
- System.out.println(Thread.currentThread().getName());
- Thread.sleep(30*1000);
- // shut down the scheduler
- scheduler.shutdown(true);
- } catch (SchedulerException e) {
- e.printStackTrace();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
JobTest.java
- package demo01;
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
- public class JobTest implements Job{
- //Instances of Job must have a public no-argument constructor
- public JobTest(){
- }
- public void execute(JobExecutionContext arg0) throws JobExecutionException {
- //看打印出的当前对象每次都不一样,就等于每次执行一次任务都新建一个job实例
- System.out.println("我的任务就是调用当前Job:"+this+"不断刷屏!!!");
- }
- }
控制台打印的结果:
- 2012-08-11 08:34:15,512 INFO [org.quartz.impl.StdSchedulerFactory] - Quartz scheduler 'QuartzTest' initialized from default resource file in Quartz package: 'quartz.properties'
- 2012-08-11 08:34:15,512 INFO [org.quartz.impl.StdSchedulerFactory] - Quartz scheduler version: 2.1.5
- 2012-08-11 08:34:15,527 INFO [org.quartz.core.QuartzScheduler] - Scheduler QuartzTest_$_NON_CLUSTERED started.
- main
- 我的任务就是调用当前Job:demo01.JobTest@1c672d0不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@1855af5不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@198dfaf不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@1858610不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@12498b5不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@1a5ab41不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@18e3e60不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@1a125f0不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@c1cd1f不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@181afa3不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@131f71a不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@15601ea不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@197d257不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@7259da不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@16930e2不断刷屏!!!
- 我的任务就是调用当前Job:demo01.JobTest@1add2dd不断刷屏!!!
- 2012-08-11 08:34:45,538 INFO [org.quartz.core.QuartzScheduler] - Scheduler QuartzTest_$_NON_CLUSTERED shutting down.
- 2012-08-11 08:34:45,538 INFO [org.quartz.core.QuartzScheduler] - Scheduler QuartzTest_$_NON_CLUSTERED paused.
- 2012-08-11 08:34:46,023 INFO [org.quartz.core.QuartzScheduler] - Scheduler QuartzTest_$_NON_CLUSTERED shutdown complete.
Quartz学习(一)相关推荐
- Quartz学习资料地址记录 、Quartz 学习的博客地址记录
Quartz专栏系列 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.Quartz学习--Quartz大致介绍(一) 2.Quartz学习--Q ...
- Quartz学习之Cron表达式详解
Quartz学习之Cron表达式详解 一.cron表达式结构 **二.各字段的含义** 解释: 注意要点: 三.示例 一.cron表达式结构 cron表达式从左到右(用空格隔开):**秒 分 小时 月 ...
- Quartz学习笔记
一.Quartz可以用来做什么? Quartz是一个任务调度框架.比如你遇到这样的问题 想每月25号,信用卡自动还款 想每年4月1日自己给当年暗恋女神发一封匿名贺卡 想每隔1小时,备份一下自己的爱情动 ...
- Quartz学习总结之核心接口Scheduler、Job
参考文章:https://www.cnblogs.com/mengrennwpu/p/7141986.html 核心接口如下: 接口 含义 Scheduler scheduler的主要API接口 Jo ...
- Quartz学习笔记1-什么是Quartz?
什么是Quartz? Quartz是功能强大的开源作业调度库,几乎可以集成到任何Java应用程序中-从最小的独立应用程序到最大的电子商务系统.Quartz可用于创建简单或复杂的计划,以执行数以万计,数 ...
- 作业调度框架 Quartz 学习笔记(三) -- Cron表达式
2019独角兽企业重金招聘Python工程师标准>>> 前面两篇说的是简单的触发器(SimpleTrigger) , SimpleTrigger 只能处理简单的事件出发,如果想灵活的 ...
- Quartz学习总结(2)——定时任务框架Quartz详解
一.概述 Quartz是OpenSymphony开源组织的一个开源项目,定时任务框架,纯Java语言实现,最新版本为2.3.0. Quartz中用到的设计模式:Builder模式.Factory模式. ...
- Quartz学习总结(1)——Spring集成Quartz框架
一.Quartz简介 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简 ...
- 【Quartz系列001】Quartz学习总结
一.概念例析快速入门 组件Job.JobDetail.Trigger.Calendar.Scheduler 1.+版本jar包中,JobDetail是个类,直接通过构造方法与Job类关联.Simple ...
- Quartz学习记录
1.1 什么时候需要任务调度? 1.1.1 任务调度的背景 在业务系统中有很多这样的场景: 1.账单日或者还款日上午 10 点,给每个信用卡客户发送账单通知,还款通知.如 何判断客户的账单日.还款日, ...
最新文章
- 8 -- 深入使用Spring -- 3...1 Resource实现类InputStreamResource、ByteArrayResource
- sed在替换的时候,使用变量中的值?如何在sed实现变量的替换?获取到变量中的值?...
- js判断是由含有a节点_怎么判断某个dom节点是否包含某个dom节点?
- VS2015配置opencv教程(图文详解)
- 【机器学习】逻辑回归模型
- CUDA中并行规约(Parallel Reduction)的优化
- IEEE 1588-2002 Precision Time Protocol(PTP)
- final关键字修饰类,方法以及变量的特点 学习
- thinkphp框架知识点
- 动态规划-有关计数问题的DP-多重集组合数
- SpringBoot 2.0 整合Mybatis详细步骤
- 资源分配博弈之纳什均衡和斯塔克尔伯格模型
- [随想感悟] 申论到底是什么 写好申论的要点
- Coloring Torus(Atcoder Grand Contest 030 C)
- ES 查询 —— match 和 match_prase
- 文件服务器迁移多种方案
- 黑马程序员--Foundation框架之--NSObject类
- java 纯真ip 乱码_纯真ip地址数据库乱码解决方案、utf8和gbk相互转换及下载
- 用Python计算正方形面积
- 验证不能输入中文的正则表达式
热门文章
- 有什么软件可用于Mac系统的硬盘格式转换
- 详解tomcat的连接数与线程池--转载
- 项目功能介绍 非常有用
- 自学PL/SQL 第一讲decalring variables
- mkdir() mkdirs() createNewFile
- ASP.net在页面所有内容生成后、输出内容前对页面内容进行操作
- leetcode [27] 移除元素 / Remove Element
- 苹果mac图像编辑和设计工具:Photoshop 2021
- PowerPhotos:Mac照片库管理软件
- 苹果电脑如何正确断网?macOS操作系统断网方法