新浪博客完全不适合写技术类文章。本来是想找一个技术性的博客发发自己最近学的东西,发现博客园起源于咱江苏,一个非常质朴的网站,行,咱要养成好习惯,以后没事多总结总结经验吧。很多时候都在网上搜索别人的总结,我自己也总结些东西,或许多多少少能帮得上别人。

首先提到的是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基本用法的更多相关文章

  1. Java EE学习——Quartz的Cron表达式

    经历过低谷后,还是要好好学习,越失落会越来越落后. 今天写一下Cron表达式的用法,虽然是之前自己写的,也过了挺长一段时间,这次就拿出来作为回顾吧. Cron表达式是Quartz的精髓(个人觉得),比 ...

  2. Java EE 学习(9):IDEA + maven + spring 搭建 web(5)- 博客文章管理

    转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) . 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) Jav ...

  3. Java EE 学习(8):IDEA + maven + spring 搭建 web(4)- 用户管理

    转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) ava E ...

  4. Java EE 学习(7):IDEA + maven + spring 搭建 web(3)- 配置数据库

    参考: https://my.oschina.net/gaussik/blog/513444 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 ...

  5. Java EE 学习(6):IDEA + maven + spring 搭建 web(2)- 配置 Spring

    参考:https://my.oschina.net/gaussik/blog/513353 注:此文承接上一文:Java EE 学习(5):IDEA + maven + spring 搭建 web(1 ...

  6. 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 ...

  7. Java EE 学习(4):IDEA + maven 搭建 web(2)

    参考:http://www.bubuko.com/infodetail-1855067.html 现使用 Maven 创建项目:本节接Java EE 学习(3):IDEA + maven 搭建 web ...

  8. 【Java EE 学习 74 上】【数据采集系统第六天】【使用Jfreechart的统计图实现】【Jfreechart的基本使用方法】

    之前已经实现了数据的采集,现在已经有了基本的数据,下一步就需要使用这些数据实现统计图的绘制了.这里使用Jfreechart实现这些统计图的绘制.首先看一下Jfreechart的基本用法,只有知道了它的 ...

  9. 【Java EE 学习 80 上】【WebService】

    一.WebService概述 什么是WebService,顾名思义,就是基于Web的服务,它使用Http方式接收和响应外部系统的某种请求,从而实现远程调用.WebService实际上就是依据某些标准, ...

随机推荐

  1. Jenkins进阶系列之——03parameterized-trigger插件

    说明:这个插件可以根据已经完成构建的结果,触发新Job或者传递参数. 官方说明:Parameterized Trigger Plugin 安装步骤: 系统管理→管理插件→可选插件→Build Trig ...

  2. WPF ListView DoubleClick

    <ListView   x:Name="TrackListView"  MouseDoubleClick="MouseDoubleClick"       ...

  3. unity3d 扩展NGUI —— 限制UI点击响应间隔

    当某个按钮按下后给服务器发送某条消息 如果玩家短时间内疯狂点击按钮很多次,这将会给服务器发送很多条无用数据 不但增加了服务器的压力,发送数据还浪费流量,甚至可能引发一些莫名其妙的bug 所以,限制UI ...

  4. 架构师速成-如何高效编程 for java

    引子 赵云大喝一声,挺枪骤马杀入重围,左冲右突,如入无人之境.那枪浑身上下,若舞梨花:遍体纷纷,如飘瑞雪. 赵云是所有历史人物中我最喜欢的一个,如果放到现代,他走了it的道路,一定可以成为一个编程高手 ...

  5. GnuDIP制作动态域名服务器(DDNS Server)_转载http://blog.sina.com.cn/s/blog_4d4c23530100rlfj.html

    这个阶段在做DDNS,虽然有dyndns和tzo两个免费的国外的DDNS服务器(支持免费用户注册使用),但是公司需求中要有GnuDIP这种服务.于是只能自己制作DDNS服务器,颇费功夫,于是想把这段记 ...

  6. 【BZOJ1008】【HNOI2008】越狱(数学排列组合题)

    1008: [HNOI2008]越狱 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 3140  Solved: 1317[Submit][Status] ...

  7. [C#]Attribute特性

    简介 特性提供功能强大的方法,用以将元数据或声明信息与代码(程序集.类型.方法.属性等)相关联. 特性与程序实体关联后,即可在运行时使用名为“反射”的技术查询特性. 特性具有以下属性: 特性可向程序中 ...

  8. easyUI icon中文命名图片无法在浏览器中访问处理方法

    本身的原因是Tomcat没有设置URIencoding,导致无法识别 在Tomcat 文件夹 conf 中 server.xml中加 URIEncoding="utf-8"  可以 ...

  9. oracle 简述

    1.数据库有很多的管理工具,Sqlplus是最好的管理工具. 2.sql语句是学习中最难的部分,如何编写出高效的sql 语句是我们的目标 3.oracle的日常最终要的工作就是备份,永远是备份,有数据 ...

  10. 看css发现一个pointer-events:none;的东西

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...