- 浏览: 175996 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (87)
- Android (7)
- J2EE (34)
- JavaScript (6)
- CSS (1)
- Scala (0)
- WEB (5)
- Ruby (1)
- J2EE Netbeans JDK (1)
- Maven (2)
- AndroidMenuTest (0)
- ExtJS (1)
- MyBatis (4)
- iBatis (3)
- Quartz (1)
- JavaABC (3)
- HTML (1)
- JQuery (2)
- mysql (3)
- Linux (2)
- windows (1)
- ant (2)
- jboss (1)
- eclipse (1)
- junit (1)
- nginx (1)
- Google (0)
- git (2)
- python (1)
- kafka (1)
- sqlserver (1)
- jdk8+ (1)
Quartz 官网 http://quartz-scheduler.org
Quartz各版本下载地址http://quartz-scheduler.org/downloads/catalog
Quartz官方文档地址http://www.quartz-scheduler.org/documentation
Release Notes:
Quartz 2.0.2, 5/27/2011
Quartz 1.8.5, 4/12/2011
Quartz 1.7.3, 2/23/2010
Quartz 1.6.6, 11/2/2009
Quartz 1.5.2, 3/3/2006
Quartz 1.4.5, 3/13/2005
搜了一下网络上的很多有关Quartz的中文版的东西还都是1.6版本前的,看来近两年大家使用Quartz的不多啊。但是项目需求需要我学习一下,还是用最新的2.0.2吧。
包里面有15个例子,我慢慢看吧,估计这十五个例子看完就基本掌握了Quartz了吧。
按照官方的Quick Start:http://www.quartz-scheduler.org/documentation/quartz-2.1.x/quick-start
首先看看quartz.properties的配置文件吧,不过貌似只有例10,11,14用了。
先上一个例1吧:
Job类,你要执行的Job
真正的定时器在这里:
新老版本的改动还是挺大的
JobDetail jobDetail = new JobDetail("jobDetail-s1", "jobDetailGroup-s1", HelloJob.class);
新版本的JobDetail也改为接口类型了。
JobDetail job = newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
Quartz各版本下载地址http://quartz-scheduler.org/downloads/catalog
Quartz官方文档地址http://www.quartz-scheduler.org/documentation
Release Notes:
Quartz 2.0.2, 5/27/2011
Quartz 1.8.5, 4/12/2011
Quartz 1.7.3, 2/23/2010
Quartz 1.6.6, 11/2/2009
Quartz 1.5.2, 3/3/2006
Quartz 1.4.5, 3/13/2005
搜了一下网络上的很多有关Quartz的中文版的东西还都是1.6版本前的,看来近两年大家使用Quartz的不多啊。但是项目需求需要我学习一下,还是用最新的2.0.2吧。
包里面有15个例子,我慢慢看吧,估计这十五个例子看完就基本掌握了Quartz了吧。
按照官方的Quick Start:http://www.quartz-scheduler.org/documentation/quartz-2.1.x/quick-start
首先看看quartz.properties的配置文件吧,不过貌似只有例10,11,14用了。
org.quartz.scheduler.instanceName: PriorityExampleScheduler # Set thread count to 1 to force Triggers scheduled for the same time to # to be ordered by priority. org.quartz.threadPool.threadCount: 1 org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool org.quartz.jobStore.class: org.quartz.simpl.RAMJobStore
先上一个例1吧:
Job类,你要执行的Job
package com.oneregal.util; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * @author yiranrenxiaoyao */ public class HelloJob implements Job { private static Logger _log = LoggerFactory.getLogger(HelloJob.class); public HelloJob() { } /** * * @throws JobExecutionException * if there is an exception while executing the job. */ public void execute(JobExecutionContext context) throws JobExecutionException { // Say Hello to the World and display the date/time _log.info("Hello World! - " + new Date()); JobKey jobKey = context.getJobDetail().getKey(); JobDataMap dataMap = context.getJobDetail().getJobDataMap(); String jobSays = dataMap.getString("jobSays"); float myFloatValue = dataMap.getFloat("myFloatValue"); System.out.println("JobSays:" + jobSays); } }
真正的定时器在这里:
package com.oneregal.util; import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; import static org.quartz.DateBuilder.*; import java.util.Date; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerFactory; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author yiranrenxiaoyao */ public class SimpleExample { public void run() throws Exception { Logger log = LoggerFactory.getLogger(SimpleExample.class); log.info("------- Initializing ----------------------"); // First we must get a reference to a scheduler SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); log.info("------- Initialization Complete -----------"); // computer a time that is on the next round minute Date runTime = evenMinuteDate(new Date()); log.info("------- Scheduling Job -------------------"); // define the job and tie it to our HelloJob class //You will typically want to use a static import of all of its methods, //in order to have the DSL-feel within your code. //以上是官方文档里面的解释为什么用import static,可以让你DSL-feel, //这feel其实我觉得到不太习惯呢,还是更喜欢JobBuilder.newJob(HelloJob.class) JobDetail job = newJob(HelloJob.class) .withIdentity("job1", "group1") .usingJobData("jobSays", "Hello Quartz!") .usingJobData("myFloatValue", 3.1415926f) .build(); //Tutorials里面有.usingJobData("myStateData", new ArrayList()),可是我看API里面 //Value属性只有Boolean,Double,Float,Integer,Long,没看到Object或者List //但是usingJobData(JobDataMap)这个就实用多了,类似Java的Map可以随意往里面塞数据了 //JobDataMap dMap = new JobDataMap();dMap.put(key,value); // Trigger the job to run on the next round minute Trigger trigger = newTrigger() .withIdentity("trigger1", "group1") .startAt(runTime) .build(); // Tell quartz to schedule the job using our trigger sched.scheduleJob(job, trigger); log.info(job.getKey() + " will run at: " + runTime); // Start up the scheduler (nothing can actually run until the // scheduler has been started) sched.start(); log.info("------- Started Scheduler -----------------"); // wait long enough so that the scheduler as an opportunity to // run the job! log.info("------- Waiting 65 seconds... -------------"); try { // wait 65 seconds to show job Thread.sleep(65L * 1000L); // executing... } catch (Exception e) { } // shut down the scheduler log.info("------- Shutting Down ---------------------"); sched.shutdown(true); log.info("------- Shutdown Complete -----------------"); } public static void main(String[] args) throws Exception { SimpleExample example = new SimpleExample(); example.run(); } }
新老版本的改动还是挺大的
JobDetail jobDetail = new JobDetail("jobDetail-s1", "jobDetailGroup-s1", HelloJob.class);
新版本的JobDetail也改为接口类型了。
JobDetail job = newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
发表评论
-
日志过滤小工具
2020-01-06 20:15 4631.从全量日志中截断部 ... -
GC参考手册
2017-11-09 14:12 568英文版原文:GC Tuning: In Practice 垃圾 ... -
IDENTITY_INSERT 设置为 OFF 时无法指定插入自增ID
2017-02-15 16:10 664IDENTITY_INSERT 设置为 OFF 时,无法指定I ... -
运行时Exception:Wrong return type in function
2015-11-17 21:31 1534D:\Soft\jdk1.7.0_79\bin\java ... -
Java中的常量:如何避免反模式
2015-10-20 20:41 454参考http://www.importnew.com/1670 ... -
java Socket通信小栗子
2015-09-14 09:25 619server端: package com.test.soc ... -
MyBatis 自动生成xml文件
2015-03-12 11:22 3813package com.test.mybatis; ... -
Java mail test
2015-02-12 11:03 1333mail局域网Exchange服务器测试代码,仅限发送到dom ... -
Java Concurrency / Multithreading Tutorial
2014-10-28 09:35 709Java Concurrency / Multithreadi ... -
Comparison method violates its general contract!
2014-10-22 17:24 966jdk1.6升级到1.7后Comparator有null的参数 ... -
JDK1.7 不兼容compare方法
2014-10-21 16:20 797java.lang.IllegalArgumentExcept ... -
Unknown Source的出现及解决
2014-06-18 10:03 934http://www.2cto.com/kf/201103/8 ... -
ApplicationDeadlockException
2014-06-16 15:39 787参考 : How to avoid huge transact ... -
Java Date相关处理
2014-02-26 14:35 6091.获取UTC时间: Calendar c ... -
Error listenerStart
2013-12-11 19:25 733INFO: Deploying web applicati ... -
Error configuring application listener of class org.springframework.web.context.
2013-12-07 18:54 38187如果Eclipse的BuildPath里面不缺jar包并且在 ... -
iReport字体报错“JRFontNotFoundException”
2013-10-11 11:08 12813net.sf.jasperreports.engine.uti ... -
Eclipse里Jboss的配置
2013-07-15 17:41 9651.\WorkSpace\.metadata\.plugins ... -
Ant安装使用入门
2013-07-04 14:03 573下载Ant之后,增加环境变量1.ANT_HOME=xx/xx/ ... -
javaSystem获取系统信息
2013-03-27 16:30 812public static void main(Strin ...
相关推荐
【标题】:“定时器Quartz” Quartz是一个开源的工作调度框架,它允许Java开发者安排任务在特定的时间点执行。在企业级应用中,Quartz常用于实现自动化任务,如发送邮件、数据同步、报表生成等。它提供了丰富的API...
Quartz定时器是一款广泛应用于Java开发中的开源任务调度框架,其功能强大且灵活,能够帮助开发者轻松实现定时任务的管理。在Java应用中,我们常常需要执行一些周期性的任务,如数据备份、清理缓存或者发送邮件等,而...
总结,通过在Android Studio中集成Quartz,开发者可以方便地实现复杂的定时任务,提升应用的功能性和用户体验。通过正确配置和使用,Quartz可以成为Android应用的强大工具。不过,需要注意Android的特殊性,如主线程...
Web定时器组件是Java Web应用中用于执行周期性任务的关键工具。它允许开发者在特定时间间隔内自动执行某些操作,例如数据同步、日志清理、发送通知等。这些任务可以是后台运行的,不会影响用户的交互体验。在本文中...
在JavaScript环境中,虽然Quartz通常与Java应用服务器一起使用,但可以通过一些方式将其表达式功能引入到前端,实现通过JS脚本来配置定时任务。 **Quartz表达式** Quartz表达式,也被称为Cron表达式,是一种字符串...
Quartz是Java领域中广泛应用的一款开源任务调度框架,它的核心功能是实现定时任务的管理和执行。版本2.2.3是其稳定的一个发行版,包含了对之前版本的改进和优化。在Java应用中,Quartz可以作为一个强大的工具,用于...
使用`java.util.Timer`可以非常方便地实现定时任务的功能,这对于提高应用程序的自动化程度和用户体验具有重要意义。同时,我们也应该注意到,在实际项目开发过程中,还需要结合具体的应用场景进行合理的设计和优化...
首先,Spring提供了两种主要的方式来实现定时任务:`Spring Task`(也称为`Task Execution and Scheduling`)和`Quartz Scheduler`。这里我们将重点讨论Spring Task,因为它是Spring框架内置的解决方案,集成更加...
在企业级应用中,例如Java开发,我们可以使用Quartz Scheduler来实现复杂的定时任务管理。 对于"shd.exe"这个文件,根据上下文,很可能是Scheduler相关的可执行程序,可能是一个定制的定时器软件或是任务计划程序的...
总的来说,"定时自动关机 释放内存小工具"是一个针对普通用户的实用程序,它集成了定时关机、内存管理和开机时间监控等功能,旨在提高计算机的使用体验和效率。通过定时关机,用户可以设定自动化的工作流程;通过...
- 定时器:Quartz 2.3 - 数据库连接池:Druid 1.0 - 日志管理:SLF4J 1.7、Log4j - 页面交互:Vue2.x - 缓存:redis 2.8 - 手机页面:weui 软件需求** - JDK1.8+ - MySQL5.5+ - Tomcat7.0+ - Maven3.0+ **本地...
1. **Quartz**: Quartz是一个开源的作业调度框架,它可以与Java应用程序一起使用,或者被嵌入到J2EE应用服务器中。Quartz提供了丰富的API,允许开发者定义作业和触发器,以实现复杂的定时任务调度。 2. **Spring ...
这需要使用到JAVA的定时器(Timer)类或者Quartz库,设置定时任务在指定时间提醒用户。提醒方式可以是弹窗、声音或者发送通知到用户的设备。 总的来说,"日历记事本"项目涉及到了JAVA GUI编程、数据结构与算法、...
这通常可以通过Spring的TaskExecution和TaskScheduling模块实现,或者结合Quartz、ScheduledExecutorService等第三方库。 3. **Java内存缓存**:为了提升性能,CRM系统可能会使用内存缓存技术,例如EhCache或Spring...
这通常通过Java的定时器(java.util.Timer)或者更高级的Quartz Scheduler来完成,允许用户设定周期性地生成报告。系统可能还包含了事件驱动和观察者模式,以便在报告生成后自动通知相关人员。 对于报告的共享,...
5. **Notifications and Reminders**:为了确保用户不会错过任何重要事件,系统可能有定时提醒功能,这可能通过Java的定时器类(如java.util.Timer)或第三方库如Quartz Scheduler实现。 6. **API Integration**:...
通过自定义视图,开发者可以实现独特的用户界面元素,增强应用的用户体验。 总的来说,"YYClock 时钟案例"涵盖了iOS开发中的多个关键知识点,包括图形渲染、动画、事件处理和自定义控件设计,对于想要深入学习iOS...
例如,在Python中可以使用`APScheduler`库,Java中可以使用`Quartz`框架,设定在特定时间执行发送消息的函数。 3. **消息推送流程**: - **构建消息结构**:首先,需要按照微信企业号的消息格式构建消息内容,包括...
5. **时间设定**:定时更新数据可能通过前端定时器(JavaScript的setInterval)实现,或者后端设置定时任务,如Quartz或Spring Task,定时推送给前端。具体方式取决于项目的实时性需求和架构设计。 6. **部署与运行...
5. **后台任务与计划调度**:为了在特定时间自动删除消息,应用可能利用Java的ScheduledExecutorService或者第三方库如Quartz Scheduler来安排定期任务,检查并清理过期消息。 6. **前端界面与用户体验**: Ribbit...