Quartz入门
来源:互联网 发布:linux 存放.rpm的目录 编辑:程序博客网 时间:2024/05/17 12:03
思考一个问题
现在有一个需求,需要每天在零点定时执行一些操作,让我实现的话,我会这么做:
public void run(){ //获取当前时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:MM:SS"); Calendar calendar = new GregorianCalendar(2017,9,28,0,0,0); Date today = new Date(calendar.getTimeInMillis()); //不断循环,判断时间 while(true){ Date now = new Date(); if(now.equals(today)){ //TODO 时间到,执行相关代码 calendar.add(Calendar.DAY_OF_MONTH, 1); today = new Date(calendar.getTimeInMillis()); } } }
但是,有没有已经开源的,封装好的,功能强大的定时任务呢?答案是有的,那就是Quartz.
Quartz的简单介绍
Quartz 是一种功能丰富的,开放源码的作业调度库,可以在几乎任何Java应用程序集成,从最小的独立的应用程序到规模最大电子商务系统。Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是十万的作业数,作业被定义为标准的Java组件,可以执行几乎任何东西,可以编程让它们执行。 Quartz调度包括许多企业级功能,如JTA事务和集群支持。
Quartz 是可自由使用,使用Apache 2.0 license授权方式。
如果应用程序需要在给定时间执行任务,或者如果系统有连续维护作业,那么Quartz是理想的解决方案。
使用Quartz作业调度应用的示例:
- 驱动处理工作流程:作为一个新的订单被初始化放置,调度作业到在正好两个小时内,它将检查订单的状态,如果订单确认消息尚未收到命令触发警告通知,以及改变订单的状态为“等待的干预”。
- 系统维护:调度工作给数据库的内容,每个工作日(节假日除外平日)在11:30 PM转储到一个XML文件中。
- 在应用程序内提供提醒服务。
如何使用Quartz
实现Job
Quartz作业定义要运行什么?
import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class HelloJob implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Hello Quartz!"); }}
Quartz触发器
- SimpleTrigger – 允许设置开始时间,结束时间,重复间隔。
SimpleTrigger – 每5秒运行。
Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(5).repeatForever()) .build();
- CronTrigger – 允许UNIX cron表达式来指定日期和时间来运行作业。
CronTrigger – 每5秒运行。
Trigger trigger = TriggerBuilder .newTrigger() .withIdentity("dummyTriggerName", "group1") .withSchedule( CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build();
Scheduler
调度类链接“工作”和“触发器”到一起,并执行它。
Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(job, trigger);
练习代码地址:https://github.com/wayss000/PracticeCode/tree/master/quartzdemo/helloworld
Quartz的高级特点
- 作业调度
- 作业执行
- 作业持久性
- 事务
- 集群
- 监听器和插件
最后
最后附上学习Quartz思维导图
参考资料:
Quartz教程:http://www.yiibai.com/quartz/
慕课网视频:http://www.imooc.com/learn/846
阅读全文
0 0
- Quartz 入门
- Quartz入门
- quartz入门
- Quartz入门
- Quartz入门
- Quartz入门
- Quartz入门
- Quartz入门
- Quartz入门
- 【Quartz】Quartz任务调度入门
- Quartz(01) Quartz快速入门
- Quartz入门到精通
- Quartz.NET 入门
- Quartz快速入门指南
- Quartz使用入门
- quartz入门实例
- Quartz---入门级实例
- Quartz.net 入门 总结
- 微信小程序踩坑日记
- 【BZOJ 2433】[Noi2011]智能车比赛
- 笔记本拆机清灰,换硅脂,升级改造链接
- FTPrep, 93 Restore IP Addresses
- ES6——set、map数据结构
- Quartz入门
- Python整数占用字节的异常现象(非4或8字节),sys.getsizeof(),sys.maxsize,sys.int_info
- Calendar中的一些方法 设置闹钟相关
- idea 使用
- Mac Eclipse Failed to load JavaHL Library.
- 根据查询参数list动态拼接SQL
- 《坚持与自由》——读明朝那些事儿有感
- ubuntu wifi hard blocked解决方法
- iOS开发中Member Center的一些理解