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基本用法,布布扣,bubuko.com

时间: 2024-10-15 13:41:50

Java EE学习--Quartz基本用法的相关文章

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

经历过低谷后,还是要好好学习,越失落会越来越落后. 今天写一下Cron表达式的用法,虽然是之前自己写的,也过了挺长一段时间,这次就拿出来作为回顾吧. Cron表达式是Quartz的精髓(个人觉得),比如我们想设定淘宝“秒杀”的那一秒时间,完全可以用下面的方法设置执行时间. Calendar cal = Calendar.getInstance(); //设置将要发生的时间... cal.set(Calendar.DATE, xxx); //.......常规的生成scheduler和job //

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

转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) . 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) Java EE 学习(6):IDEA + maven + spring 搭建 web(2)- 配置 Spring Java EE 学习(7):IDEA + maven + spring 搭建 web(3)- 配置数据库 Java EE 学习(8):IDEA + maven + spring 搭建 web(

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

参考: https://my.oschina.net/gaussik/blog/513444 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) Java EE 学习(6):IDEA + maven + spring 搭建 web(2) 5 数据库配置 下面,就要通过一个简单的例子,来介绍 SpringMVC 如何集成 Spring Data JPA(由 Hibernate JPA 提供),来进行强大的数据库访问,并通过本章节

JAVA EE 学习笔记[V1 jsp编程]

在三月初学校开设了javaee的课程,也就此展开了对javaee基础的学习.然后老师也对这次的课程有一定要求.前面的基础就为最终的作业做准备啦~ 在上学期我们学习了java相关知识,也对java se 的安装使用有了一定的认知,而java ee则是构建于java se 平台之上的一套多层的,可扩展的的网络应用. 学习java ee我们首先进行环境的搭建.无非就是使用 tomcat进行服务器的搭建和jdk环境变量配置.而IDE这方面我们选择myeclipse 2016 CI(这个编译器自带tomc

Java EE 学习(5):IDEA + maven + spring 搭建 web(1)

参考:http://www.cnblogs.com/lonelyxmas/p/5397422.html http://www.ctolib.com/docs-IntelliJ-IDEA-c--159047.html 孔老师的<SpringMVC视频教程> 记录: 本节主要完成 使用 maven 管理 spring + 项目 包,搭建 maven+spring 的 web 项目平台. 前提: 已安装并配置好 - Intellij IDEA 16.3.5 Ultimate - JDK 1.8.0_

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

转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) ava EE 学习(6):IDEA + maven + spring 搭建 web(2)- 配置 Spring Java EE 学习(7):IDEA + maven + spring 搭建 web(3)- 配置数据库 记录: 通过对用户表的管理,更加深入地讲解SpringMVC的操作. 6 用户管理 既然我们

【Java EE 学习第16天】【dbcp数据库连接池】【c3p0数据库连接池】

零.回顾之前使用的动态代理的方式实现的数据库连接池: 代码: 1 package day16.utils; 2 3 import java.io.IOException; 4 import java.lang.reflect.InvocationHandler; 5 import java.lang.reflect.Method; 6 import java.lang.reflect.Proxy; 7 import java.sql.Connection; 8 import java.sql.D

Java EE学习之旅1——HeadFirstJavaEE

因为找到的实习是用Java开发的公司,所以来学习一下Java EE的知识. 首先找来了书<轻量级Java EE企业应用实战>. 啊不得不说学了Java之后直接看这个还是完全不行呢,好多名词看都没有看过啊哈哈. 首先来看看都些啥看不懂的词... 1.JSP.Servlet和JavaBean JSP和Servlet都是用在表现层的东西,而实质上JSP编译成Servlet才运行. 但Servlet开发成本太大,所以用JSP. JavaBean用来通信交换表现层和底层数据. 2.MVC和Struts

Java EE学习之旅2——Ant

上次也了解了一下Ant是啥了,就是管理Java生成的工具嘛. 然后今天来学习一下如何使用Ant. 首先是指令: -find和-s Ant会一直到上级目录搜索build.xml,直到到达文件系统根目录: -buildfile.-file和-f 使用其他生成文件,例如a.xml: -quiet和-q 运行时只输出少数提示信息: -verbose和-v 输出多一点的提示信息. 2014-07-12 22:17:14 Java EE学习之旅2--Ant