Java EE学习--Quartz基本用法
新浪博客完全不适合写技术类文章。本来是想找一个技术性的博客发发自己最近学的东西,发现博客园起源于咱江苏,一个非常质朴的网站,行,咱要养成好习惯,以后没事多总结总结经验吧。很多时候都在网上搜索别人的总结,我自己也总结些东西,或许多多少少能帮得上别人。
首先提到的是Quartz,一个开源的定期执行计划任务的框架。其实我内心好奇这个框架很久了,像那些能定时修改数据库数据,定时分配任务的功能一直觉得很神奇。心动不如行动,今天我就小小的学习了一下用法,力求言简意赅,大家都懂的我就不说了。
第一步:下载Quartz包:
Quartz的最新版本可以上官网上下载,网址:http://www.quartz-scheduler.org/downloads。下载最新版的就好,经过测试Java 1.6和1.7都是可以支持的。
下载完毕后,解压缩。后缀.tar.gz在Linux下用tar -zxvf,在windows下随便一个解压缩的软件都行,这里不再详述。
第二步:创建Quartz工程:
以Eclipse为例,创建一个普通的Java工程,然后在Build Path中,导入Quartz目录下/lib/下除了c3p0以外所有Jar包。
Quartz的原理大概是:按照时间计划,定期执行目标类的execute方法(通过反射,所以目标类需要实现接口)
接着开始编写Java代码,我们先写一个类,实现org.quartz.Job接口,重写execute方法(有点像struts2?)代码如下:
public class MyJob implements Job
{
@Override
public void execute(JobExecutionContext ctx) throws JobExecutionException
{
//在这里编写要执行的计划任务,这里为了简单起见,写了一行打印语句
//实际可能是数据库的CRUD操作,或者定时对操作系统环境进行优化,等等
System.out.println("Now It's My Running Time");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("Job Time is:"+format.format(new Date()));
}
}
接着,我们需要对这个任务进行调度。在哪里编写调度代码呢?先从最简单的main方式说明吧,新建一个类,在main方法中:
public static void main(String[] args) throws Exception
{
//创建scheduler工厂类,并生成scheduler对象
SchedulerFactory factory = new StdSchedulerFactory();
Scheduler sche = factory.getScheduler(); //先输出当前时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(format.format(new Date())); //何时执行这个计划?需要先生成一个Date对象,表示计划要执行的时间
//DateBuilder是Quartz提供的类,evenMinuteDateAfterNow是从现在起下一分钟
Date runTime = DateBuilder.evenMinuteDateAfterNow(); //分别创建JobDetail和Trigger对象,方式类似,都是静态构造,XXXBuilder.newXXX().build()
JobDetail job = JobBuilder.newJob(MyJob.class).build();
Trigger trigger = TriggerBuilder.newTrigger().startAt(runTime).build(); //把任务和触发器加到scheduler中
sche.scheduleJob(job, trigger);
//开始任务
sche.start(); //此时Quartz应该是另起线程去获取时间了,所以应该在主线程等待一段时间,等计划任务执行完毕
//要不然main方法一结束,Quartz也就不运行了。
Thread.sleep(60*1000);
sche.shutdown();
}
运行完毕后,Console显示类似如下结果:
2014-08-01 22:10:15
Now It's My Running Time
Job Time is:2014-08-01 22:11:00
确实是按照预期目标运行的,Quartz就是这么简单!
Java EE学习--Quartz基本用法的更多相关文章
- Java EE学习——Quartz的Cron表达式
经历过低谷后,还是要好好学习,越失落会越来越落后. 今天写一下Cron表达式的用法,虽然是之前自己写的,也过了挺长一段时间,这次就拿出来作为回顾吧. Cron表达式是Quartz的精髓(个人觉得),比 ...
- Java EE 学习(9):IDEA + maven + spring 搭建 web(5)- 博客文章管理
转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) . 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) Jav ...
- Java EE 学习(8):IDEA + maven + spring 搭建 web(4)- 用户管理
转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) ava E ...
- Java EE 学习(7):IDEA + maven + spring 搭建 web(3)- 配置数据库
参考: https://my.oschina.net/gaussik/blog/513444 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 ...
- Java EE 学习(6):IDEA + maven + spring 搭建 web(2)- 配置 Spring
参考:https://my.oschina.net/gaussik/blog/513353 注:此文承接上一文:Java EE 学习(5):IDEA + maven + spring 搭建 web(1 ...
- Java EE 学习(5):IDEA + maven + spring 搭建 web(1)
参考:http://www.cnblogs.com/lonelyxmas/p/5397422.html http://www.ctolib.com/docs-IntelliJ-IDEA-c--1590 ...
- Java EE 学习(4):IDEA + maven 搭建 web(2)
参考:http://www.bubuko.com/infodetail-1855067.html 现使用 Maven 创建项目:本节接Java EE 学习(3):IDEA + maven 搭建 web ...
- 【Java EE 学习 74 上】【数据采集系统第六天】【使用Jfreechart的统计图实现】【Jfreechart的基本使用方法】
之前已经实现了数据的采集,现在已经有了基本的数据,下一步就需要使用这些数据实现统计图的绘制了.这里使用Jfreechart实现这些统计图的绘制.首先看一下Jfreechart的基本用法,只有知道了它的 ...
- 【Java EE 学习 80 上】【WebService】
一.WebService概述 什么是WebService,顾名思义,就是基于Web的服务,它使用Http方式接收和响应外部系统的某种请求,从而实现远程调用.WebService实际上就是依据某些标准, ...
随机推荐
- 熟悉linux开发环境(实验)
北京电子科技学院(BESTI) 实验报告 课程: 深入理解计算机系统 班级: 1353班 姓名:张若嘉 杨舒雯 学号:20135330 20135324 成绩: 指导教师:娄嘉鹏 实验日期:2015. ...
- python机器学习《入门》
写在前面的废话: 好吧,不得不说鱼C的markdown文本编辑器挺不错的,功能齐全.再次感谢小甲鱼哥哥的python视频让我去年大三下学期的时候入门了编程,爱上了编程这门语言,由于是偏冷门的统计学,在 ...
- lumia 520无法开机
拿出尘封已久的lumia 520,发现其开机困难,现象如下: 1.拿掉电池再放回去有几率开机 2.轻轻地用手机砸向桌面时手机会重启 因为手机在更新WP8.1之后就出问题了,所以先得定位问题,在黑屏的时 ...
- 整合 Bing translator 到自己的系统中
整合这个功能, 是因为 aliexpress 的买家来自不同国家, 我的 "小卖家" 同步到买家的留言, 很多西班牙,俄罗斯等小语种的文字, 看不懂. Google 被墙, 基本很 ...
- EF实体框架之CodeFirst八
前面七篇基本把Code First学习了一下,不过code first中会出现一个问题,就是数据迁移的问题. 一.数据准备 还是在前面的demo上修改,这次使用Province和City类. publ ...
- IT男的”幸福”生活"续1
IT男的”幸福”生活"续1 我和LL开始下步追妹计划...... 知彼知已,方能把握机会.没想到孙子兵法太给力了,据LL了解,MM(她)是湖北人,找对象一般不会考虑外省的.高度165左右,相 ...
- SSRS开发的经验记录
虽然工作经验相当的长,但是之前在SSRS上还没有象今天这样的经验.这只是工作经验的一点记录. 1. 定义DataSet 定义DataSet的时后,可以采用Text的方式.用Text的方式可以用一段比较 ...
- C# 无法识别的转义序列
解决这个问题头两种方法:1.加个"\"进行转义:2.在前面加个@ 示例:我要进入D盘下video文件夹中的ysxs文件夹,写法分别为: D:\\video\\ysxs @" ...
- git查看某个文件的修改历史及具体修改内容
有时候在比对代码时,看到某些改动,但不清楚这个改动的作者和原因,也不知道对应的BUG号,也就是说无从查到这些改动的具体原因了- [注]:某个文件的改动是有限次的,而且每次代码修改的提交都会有commi ...
- Linux 下SVN服务器搭建
系统环境 RHEL5.4最小化安装(关iptables,关selinux) + ssh + yum 一,安装必须的软件包. yum install subversion (SVN服务器 ...