quantz入门和使用流程(转载)
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-2.1.5.tar.gz (3.6 MB)
- 下载次数: 65
quantz入门和使用流程(转载)的更多相关文章
- JBPM4入门——4.封装流程管理的工具类(JbpmUtil)
本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...
- Linux系统入门---开机启动流程
目录 Linux系统入门---开机启动流程 一.centos6 二.systemd管理进程 1.查看级别 三.centos7实践案例: 1.案例1:centos7系统,单用户修改root密码 案例2: ...
- JAVA入门基础及流程控制
JAVA入门基础及流程控制 数据类型 位 存储单位 eg:0001 0011 八位 字节 byte 处理数据单位 一字节等于八位 eg:1b=0011 0001 类变量: static int num ...
- Android 开发 音视频从入门到提高 任务列表 转载
<Android 音视频从入门到提高 —— 任务列表> 1. 在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 Vi ...
- Scrapy简单入门及实例讲解-转载
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以 ...
- GJM : Python简单爬虫入门(二) [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- Mybatis第一篇【介绍、快速入门、工作流程】
什么是MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- SpringMVC第一篇【介绍、入门、工作流程、控制器】
什么是SpringMVC? SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于struts2框架 为什么要使用 ...
- Java学习从入门到精通(2) [转载]
Java Learning Path(二).书籍篇 学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握.需要有一个循序渐进的阅读过程.我推荐Oreilly出版的Java系列书籍. 在这里我 ...
随机推荐
- python之装饰器、生成器、内置函数、JSON
一.装饰器: 装饰器,器在这里的意思是函数,也就是装饰函数.作用是给其他函数添加新功能,它可以不改变原有的函数,原来的函数和原来一模一样,什么都不需要改变,只需要在函数外部加上调用哪个装饰器就可以了, ...
- cocoods 出现下面的问题:ERROR: While executing gem ... (Errno::EPERM)
今天安装cocoods 出现下面的问题:ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /us ...
- iOS开发——NSIBPrototypingLayoutConstraint原型约束造成的莫名问题
问题描述: 使用Autolayout 从xib加载后代码添加Constraint,xib中没有任何约束,只是创建了n个View并拖了线方便调用 在运行过程中产生约束冲突错误, NSIBProtot ...
- Linux下数组遍历
声明一个数组变量 直接赋值: array[]=”Zero” array[]=”One” array[]=”Two” declare声明: declare -a array 小括号空格法: array= ...
- [bug] VS2013 Brower Link和Aspnetpager引发的问题分析
概述 在ie11上浏览页面的时候,突然发现在使用Aspnetpager的页面会有一个bug. 开发环境:win8.1+vs2013+ie11. 项目描述:这个问题出现在内容页中,应用了母版页. 解决方 ...
- Android 友盟社会化组件-分享实现
本文章链接地址:http://dev.umeng.com/social/android/share/quick-integration 分享快速集成 1 产品概述 友盟社会化组件,可以让移动应用快速具 ...
- VUE ---(9)组件——props数据传递
本篇资料来于官方文档: http://cn.vuejs.org/guide/components.html#Props 本文是在官方文档的基础上,更加细致的说明,代码更多更全. 简单来说,更适合新手阅 ...
- fastjson用法&Gson
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson&l ...
- cs-SelectTree-DropTreeNode, SelectTreeList
ylbtech-Unitity: cs-SelectTree-DropTreeNode, SelectTreeList DropTreeNode.cs SelectTreeList.cs 1.A,效果 ...
- 【AS3 Coder】任务八:没剧情还玩毛RPG
使用框架:AS3任务描述:了解RPG游戏中剧情播放器的制作原理及流程难度系数:3(了解原理,能根据XML文件播放剧情) / 5(会制作剧情编辑器) 本章源码下载:http://www.iamseven ...