目录
Quartz 介绍
一般用来 作业定时调度,比如 要在每周日 执行一次xx操作,就是后台启动一个线程。
与其他产品对比
从实现的技术上来分类,目前主要有三种技术(或者说有三种产品):
- Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做详细介绍。
- 使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,稍后会详细介绍。
- Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,稍后会介绍。
下载地址
Quartz 的核心接口及应用
Quartz 的核心接口 (常用)
核心接口之间的关系
Trigger
- SimpleTrigger
每一分中执行一次某一天执行,2016-06-01执行;
- ConTrigger
- 完成更为复杂的触发 "每个月的最后一天执行 每个月的第一个星期的第二天中午11:55分执行; 每年的第二个月的第三个星期第四天晚上20:30分执行;"
- Cron Expressions
- 用表达式表达程序的调度规则
Quartz 简单案例
简单调度
Cron 表达式调度
Quartz 与 Spring 集成
创建一个简单的Job
... extends QuartzJobBean{ @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { System.out.println("Myjob 执行了..........."+context.getTrigger().getKey().getName()); ApplicationContext applicationContext = (ApplicationContext)context .getJobDetail().getJobDataMap().get("adc"); System.out.println(applicationContext); System.out.println("获取的Spring容器是:" + applicationContext); System.out.println("当前时间:"+new Date().toString()); }
配置spring
加载spring容器
public static void main(String[] args) { // 写对应的配置文件 new ClassPathXmlApplicationContext("classpath:Spring.xml"); }