- 浏览: 3548174 次
- 性别:
- 来自: 大连
博客专栏
-
使用Titanium Mo...
浏览量:38136
-
Cordova 3.x入门...
浏览量:607282
-
常用Java开源Libra...
浏览量:682291
-
搭建 CentOS 6 服...
浏览量:89331
-
Spring Boot 入...
浏览量:401828
-
基于Spring Secu...
浏览量:69688
-
MQTT入门
浏览量:91697
文章分类
最新评论
-
afateg:
阿里云的图是怎么画出来的?用什么工具?
各云服务平台的架构图 -
cbn_1992:
博主,采用jdbctoken也就是数据库形式之后,反复点击获取 ...
Spring Security OAuth2 Provider 之 数据库存储 -
ipodao:
写的很是清楚了,我找到一份中文协议:https://mcxia ...
MQTT入门(6)- 主题Topics -
Cavani_cc:
还行
MQTT入门(6)- 主题Topics -
fexiong:
博主,能否提供完整源码用于学习?邮箱:2199611997@q ...
TensorFlow 之 构建人物识别系统
Quartz 是一个完全由java编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。整合了 Quartz 的应用程序可以重用来自不同事件的作业,还可以为一个事件组合多个作业。
由James House创建并最初于2001年春天被加入sourceforge工程。之后归入OpenSymphony开源组织(2010年11月份关闭)。Terracotta公司在2009年收购了著名的Java开源缓存项目Ehcache以及Java任务调度项目Quartz。
http://quartz-scheduler.org/downloads/catalog
版本:Quartz 2.1.7
1、开始时间 startAt
2、简单触发器 withSchedule
SimpleScheduleBuilder.simpleSchedule() 可以设置间隔、重复次数
3、Cron触发器
CronScheduleBuilder.cronSchedule("0/5 * * * * ?") 使用Unix cron表达式
4、结束时间 endAt
5、作业监听器 addJobListener
6、启动多个作业 scheduleJob
7、列举所有作业 getJobKeys
8、手动触发作业 triggerJob
9、传递参数 usingJobData
10、取消/删除作业
11、作业出错时自动再执行
一直执行到成功:
执行n次后停止:
12、与Spring等框架的集成
略...
JWatch - A Quartz Monitor
http://code.google.com/p/jwatch/
Cron 表达式生成器 CronMaker
由James House创建并最初于2001年春天被加入sourceforge工程。之后归入OpenSymphony开源组织(2010年11月份关闭)。Terracotta公司在2009年收购了著名的Java开源缓存项目Ehcache以及Java任务调度项目Quartz。
http://quartz-scheduler.org/downloads/catalog
版本:Quartz 2.1.7
1、开始时间 startAt
SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); Date runTime = DateBuilder.evenSecondDate(new Date()); JobDetail job = JobBuilder.newJob(Job1.class).withIdentity("job1", "group1").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1") .startAt(runTime) .build(); sched.scheduleJob(job, trigger); sched.start();
2、简单触发器 withSchedule
SimpleScheduleBuilder.simpleSchedule() 可以设置间隔、重复次数
SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); JobDetail job = JobBuilder.newJob(Job2.class).withIdentity("job2", "group2").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger2","group2") .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1).repeatForever()) .build(); sched.scheduleJob(job, trigger); sched.start();
3、Cron触发器
CronScheduleBuilder.cronSchedule("0/5 * * * * ?") 使用Unix cron表达式
SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); JobDetail job = JobBuilder.newJob(Job3.class).withIdentity("job3", "group3").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger3","group3") .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) .build(); sched.scheduleJob(job, trigger); sched.start();
4、结束时间 endAt
SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); Date runTime = DateBuilder.evenSecondDate(new Date()); Date endTime = DateBuilder.evenMinuteDate(new Date()); JobDetail job = JobBuilder.newJob(Job4.class).withIdentity("job4", "group4").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger4","group4") .startAt(runTime) .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1).repeatForever()) .endAt(endTime) .build(); sched.scheduleJob(job, trigger); sched.start();
5、作业监听器 addJobListener
JobKey jobKey = new JobKey("dummyJobName", "group5"); JobDetail job = JobBuilder.newJob(Job5.class).withIdentity(jobKey).build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity( "dummyTriggerName", "group5").withSchedule( CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build(); Scheduler scheduler = new StdSchedulerFactory().getScheduler(); // Listener attached to jobKey scheduler.getListenerManager().addJobListener(new Job5Listener(), KeyMatcher.keyEquals(jobKey)); // Listener attached to group named "group 1" only. // scheduler.getListenerManager().addJobListener( // new HelloJobListener(), GroupMatcher.jobGroupEquals("group1") // ); scheduler.start(); scheduler.scheduleJob(job, trigger);
6、启动多个作业 scheduleJob
JobKey jobKeyA = new JobKey("job6A", "group6"); JobDetail jobA = JobBuilder.newJob(Job6A.class).withIdentity(jobKeyA).build(); JobKey jobKeyB = new JobKey("job6B", "group6"); JobDetail jobB = JobBuilder.newJob(Job6B.class).withIdentity(jobKeyB).build(); JobKey jobKeyC = new JobKey("job6C", "group6"); JobDetail jobC = JobBuilder.newJob(Job6C.class).withIdentity(jobKeyC).build(); Trigger trigger1 = TriggerBuilder.newTrigger().withIdentity( "dummyTriggerName1", "group6").withSchedule( CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build(); Trigger trigger2 = TriggerBuilder.newTrigger().withIdentity( "dummyTriggerName2", "group6").withSchedule( CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build(); Trigger trigger3 = TriggerBuilder.newTrigger().withIdentity( "dummyTriggerName3", "group6").withSchedule( CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build(); Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); scheduler.scheduleJob(jobA, trigger1); scheduler.scheduleJob(jobB, trigger2); scheduler.scheduleJob(jobC, trigger3);
7、列举所有作业 getJobKeys
Scheduler scheduler = new StdSchedulerFactory().getScheduler(); for (String groupName : scheduler.getJobGroupNames()) { for (JobKey jobKey : scheduler.getJobKeys(GroupMatcher.jobGroupEquals(groupName))) { String jobName = jobKey.getName(); String jobGroup = jobKey.getGroup(); List<Trigger> triggers = (List<Trigger>) scheduler.getTriggersOfJob(jobKey); Date nextFireTime = triggers.get(0).getNextFireTime(); System.out.println("[jobName] : " + jobName + " [groupName] : " + jobGroup + " - " + nextFireTime); } }
8、手动触发作业 triggerJob
SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); Date runTime = DateBuilder.evenSecondDate(new Date()); JobDetail job = JobBuilder.newJob(Job8.class).withIdentity("job8", "group8").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger8","group8") .startAt(runTime) .build(); sched.scheduleJob(job, trigger); sched.start(); sched.triggerJob(new JobKey("job8", "group8")); sched.triggerJob(new JobKey("job8", "group8"));
9、传递参数 usingJobData
SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); Date runTime = DateBuilder.evenSecondDate(new Date()); JobDetail job = JobBuilder.newJob(Job9.class).withIdentity("job9", "group9") .usingJobData("jobSays", "Hello Quartz!") .build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger9","group9") .startAt(runTime) .build(); sched.scheduleJob(job, trigger); sched.start();
10、取消/删除作业
// removes the given trigger sched.unscheduleJob(new TriggerKey("job10", "group10")); // removes all triggers to the given job sched.deleteJob(new JobKey("job10", "group10"));
11、作业出错时自动再执行
一直执行到成功:
JobExecutionException e2 = new JobExecutionException(e); // fire it again e2.setRefireImmediately(true); throw e2;
执行n次后停止:
// allow 5 retries if (count >= 5) { JobExecutionException e = new JobExecutionException( "Retries exceeded"); //make sure it doesn't run again e.setUnscheduleAllTriggers(true); throw e; }
12、与Spring等框架的集成
略...
JWatch - A Quartz Monitor
http://code.google.com/p/jwatch/
Cron 表达式生成器 CronMaker
- QuartzTest.zip (977.5 KB)
- 下载次数: 188
- Quartz_Job_Scheduling_FrameworkCN_V1.0.0.pdf (5 MB)
- 下载次数: 212
- Quartz_Job_Scheduling_Framework_2006_.rar (1.2 MB)
- 下载次数: 130
评论
2 楼
beiwang
2014-08-02
恩,这个不错 在用.net版本的呵呵
http://www.tc5u.com
http://www.tc5u.com
1 楼
azhqiang
2014-08-02
刚好要用到调度,学习了。
发表评论
-
Web API分页
2018-11-13 13:38 1571(一)分页类型 逻辑分页(客户端分页):从数据库将所有记录查询 ... -
JAXB实例入门
2017-06-09 10:17 1786JAXB(Java Architecture for XML ... -
Java Web项目中的Event
2017-06-05 09:42 1684(1)Servlet的事件和监听器 *** Servle ... -
关于Java SPI
2017-05-04 12:07 2045SPI:Service Provider Interface ... -
Jackson实例入门
2017-05-03 12:55 1716Jackson:Java平台的JSON解析器。 版本: ja ... -
为什么https被redirect成了http?
2016-11-14 09:35 7871全站HTTPS并不是配置证书CA,改改路径URL那么简单! ... -
简化Java代码
2016-10-09 11:25 1313样板代码Boilerplate Code的 ... -
Java Web Project based on Spring
2016-09-28 11:21 1038基于Spring开发Web项目的标配Library。 工具 ... -
Eclipse Scrapbook快速测试Java代码
2016-09-09 15:12 1331Scrapbook是Eclipse提供的特 ... -
Java爬取 百度图片&Google图片&Bing图片
2016-08-04 09:54 7624先看看抓取的结果。 抓关键字“美女”的百度图片: 抓关键字 ... -
学习Java容易混淆的一概念
2016-05-13 11:01 1682基础篇 (1)== vs equals() ... -
20年Java发展历程(1995-2015)
2015-03-25 21:58 2392Java语言作为现在最流行的编程语言之一,它已经经历了整整20 ... -
Java命令行选项解析之Commons-CLI & Args4J & JCommander
2014-11-27 12:09 22559熟悉Linux命令的都知道几乎所有程序都会提供一些命令行选项。 ... -
Java调用Native API之JNA
2014-11-10 12:09 7824Java调用C/C++的Native API一般采用JNI(J ... -
Java执行SSH/SCP之JSch
2014-08-27 17:17 11582JSch (Java Secure Channel)是纯Jav ... -
GC日志分析
2014-07-18 08:54 2872GC:Garbage Collection 垃圾回收 (1) ... -
Java元组类型之javatuples
2014-05-20 10:58 27073关于方法的返回值,经常需要返回2个值或多个值的一个序列,比如数 ... -
Java 8 之 反编译Lambda表达式(CFR)
2014-04-14 09:34 6584CFR(Class File Reader) - anoth ... -
Java 8 之 Optional类
2014-04-08 14:38 2985在Java中,null代表一个不存在的对象,如果对它进行操作就 ... -
Java 8 之 Lambda表达式
2014-04-01 09:14 16201Java 8历时2年8个月,这次升级是继Java 5之后对Ja ...
相关推荐
Java定时任务和作业调度在软件...总的来说,理解并掌握Java的定时任务和作业调度,无论是Quartz还是Timer,都是提升开发效率和系统自动化能力的重要技能。通过实践和不断探索,可以更好地利用这些工具为项目带来便利。
Quartz是Java领域内一个功能强大的开源作业调度框架,它允许开发者安排任务在特定时间执行,甚至可以处理并发任务和复杂的调度需求。Quartz提供了丰富的API,可以创建、触发、管理和监控作业与触发器。其主要特点...
Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的定时任务处理能力。在Spring框架中,Quartz可以被集成来实现复杂的定时任务调度。本文将深入探讨Quartz的使用,包括其基本概念、配置、API以及在Web...
Quartz 是个开源的作业调度框架,为在Java 应用程序中进行作业调度提供了简单而强大的机制。Quartz 允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。...
Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的...
Quartz是功能强大的开源作业调度库,几乎可以集成到任何Java应用程序中-从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的计划,以执行数以万计,数以万计的工作;任务定义为标准Java组件的...
Quartz作业调度框架是Java领域中非常重要的一个开源作业调度库。作业调度是指在预定的时间安排特定的任务进行执行。在企业级应用中,作业调度扮演着核心的角色,它使得企业能够自动化地执行定时任务,比如数据备份、...
Quartz是一个开源的作业调度框架,它允许开发者创建、调度和管理任务,这些任务可以在特定时间自动执行。Quartz支持简单和复杂的调度策略,如一次性执行、周期性执行或按照特定的时间表达式执行。其设计目标是为应用...
Quartz 是一个高度可扩展和灵活的开源作业调度框架,主要设计用于在 Java 应用程序中实现定时任务的调度。它的核心功能是基于时间触发器执行预先定义的任务,这使得开发者可以设置作业在特定时间点或者按照周期性...
Quartz是Java中一个强大的开源任务调度库,它允许开发者定义和执行短时或周期性的任务。这个经典例子展示了如何在Java项目中集成并使用Quartz进行任务自动调度。通过以下内容,我们将深入理解Quartz的基本概念、配置...
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的...
Quartz是一个广泛应用于企业级应用中的开源作业调度框架,它为开发者提供了强大的任务调度功能,使得应用程序能够在预定的时间执行特定的任务。Quartz的核心设计目标是简单易用且可高度扩展,能够满足从小型项目到...
Quartz是一个功能强大的、开源的作业调度框架,完全由Java编写而成。它能够被应用在服务器端的Java应用程序中,帮助开发者轻松地创建并管理定时任务。Quartz支持多种复杂的触发规则,并且具有高度的灵活性和可扩展性...
Quartz 是一个强大的开源作业调度框架,主要用于自动化执行任务,如定时发送邮件、执行数据清理、执行批处理等。...总的来说,Quartz 是一个强大且灵活的作业调度解决方案,广泛应用于各种 Java 应用程序中。
Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行定时任务。在Java开发环境中,Quartz常被用于实现复杂的工作调度需求,比如定时发送邮件、执行数据同步或者在特定时间运行某些业务逻辑。这个"quartz...
Java任务调度库Quartz是一个强大的开源任务调度框架,它允许开发者在Java应用程序中安排复杂的作业执行。本实例提供了一个简洁的、易于理解的Quartz应用示例,旨在帮助开发者快速集成到自己的项目中。 首先,Quartz...
Quartz 是一个强大的开源作业调度框架,专为 Java 平台设计,无论是 J2SE 还是 J2EE 应用都可以使用。它的主要目的是提供一个简单易用但功能丰富的任务调度解决方案。Quartz 具备数据库支持、集群功能、插件机制、...
在Java世界里,Quartz是一个强大的、完全开源的作业调度框架,广泛用于构建复杂的时间触发任务。本篇文章将深入探讨如何使用Quartz在Java应用程序中实现任务调度。 Quartz库提供了一个灵活的API,可以创建、调度和...