- 浏览: 153810 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
hardPass:
貌似二分法,没有一个合并的过程
简单_分治算法 -
zhufeng1981:
讲解的不错,支持一下。
简单_分治算法 -
a346063587:
嗯。。的确,基础很重要!
关于递归和尾递归的原理 -
zhufeng1981:
huoyj 写道基础很重要,这是永远不变的真理。 很赞同这句话 ...
关于递归和尾递归的原理 -
huoyj:
基础很重要,这是永远不变的真理。 很赞同这句话
关于递归和尾递归的原理
闲来无事学习了下quartz框架,其实JAVA下的定时器框架还有几个,比如java.util.Timer可以实现简单的定时器任务,但是呢这个东东有个缺点就是一个Timer内部只开了一个线程来跑的,所以它只适合做最简单的单任务事情,如果有多件事情在同一时刻发生,那么它只能做完其中一件事情才能再去做另外一件事情,请看:http://jqsl2012.iteye.com/blog/1188184
还有一个呢就是jdk1.5出的java.util.concurrent.*,这个东东可以同时处理N件事情,但是呢如果你想处理比较复杂的定时任务,就得自己搞了,其实可以借助与java.util.Calendar这个强大的日历类来做。
在平时项目中许多人都是用的quartz,有的用它和struts或spring结合在一起处理可配置的定时任务,平时任务没让我去弄这个,于是空闲下来就弄下,图个新鲜。
边弄便粗略的看看源码,发现quartz的源码写的好像jQuery的源码啊,那种链式的写法,很优雅,它的类和接口以及方法的命名真是GOOD,今天就只做了个简单的例子,也简单的看了下org.quartz.*这个包的部分类接口和方法,看的不多。感觉这个东东还是很值得去研究下里。
牢骚一句,相比傻不拉唧的码代码,我还是更愿意看看jdk啊看看算法数据结构。
quartz第一天的代码:
还有一个呢就是jdk1.5出的java.util.concurrent.*,这个东东可以同时处理N件事情,但是呢如果你想处理比较复杂的定时任务,就得自己搞了,其实可以借助与java.util.Calendar这个强大的日历类来做。
在平时项目中许多人都是用的quartz,有的用它和struts或spring结合在一起处理可配置的定时任务,平时任务没让我去弄这个,于是空闲下来就弄下,图个新鲜。
边弄便粗略的看看源码,发现quartz的源码写的好像jQuery的源码啊,那种链式的写法,很优雅,它的类和接口以及方法的命名真是GOOD,今天就只做了个简单的例子,也简单的看了下org.quartz.*这个包的部分类接口和方法,看的不多。感觉这个东东还是很值得去研究下里。
牢骚一句,相比傻不拉唧的码代码,我还是更愿意看看jdk啊看看算法数据结构。
quartz第一天的代码:
package quartz; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class SimpleJobDemo1 implements Job { private Calendar calendar = new GregorianCalendar(); public void execute(JobExecutionContext context) throws JobExecutionException { calendar.setTime(new Date()); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); int hh = calendar.get(Calendar.HOUR_OF_DAY); int mi = calendar.get(Calendar.MINUTE); int ss = calendar.get(Calendar.SECOND); String s = year + "-" + month + "-" + day + " " + hh + ":" + mi + ":" + ss; System.out.println(s + ",triggerName:" + context.getTrigger().getKey().getName() + ",triggerGroup:" + context.getTrigger().getKey().getName() + ",jobName:" + context.getJobDetail().getKey().getName() + ",jobGroup:" + context.getJobDetail().getKey().getGroup() + ",jobMap:" + context.getTrigger().getJobDataMap().getWrappedMap()); } }
package quartz; import org.quartz.CronScheduleBuilder; import org.quartz.DateBuilder; import org.quartz.DateBuilder.IntervalUnit; import org.quartz.JobBuilder; import org.quartz.JobDataMap; import org.quartz.JobDetail; import org.quartz.JobKey; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleScheduleBuilder; import org.quartz.Trigger; import org.quartz.TriggerBuilder; import org.quartz.TriggerKey; import org.quartz.impl.StdSchedulerFactory; public class SimpleTriggerDemo1 { public static void main(String[] args) { new SimpleTriggerDemo1().task(); } /** * quartz的类写的很优雅,类的方法能进行连写,和jQuery很像,好处很明显,优雅的同时也减少了代码,提高了创建类对象的使用 * * quartz包含job和trigger两个概念,job就是你要做的事情,trigger当然是触发器,他们都是有名称和组的,并且还有参数, * 这个参数呢其实就是一个quartz自己搞的一个继承了java.util.Map的类org.quartz.JobDataMap。 * 基本上org.quartz.*包能完成大部分的定时器的任务,因为初学这个所以今天也就只看了这个包的内容,感觉还是非常容易伤手的。 * 总结:org.quartz.*包下基本上搞懂job、trigger、scheduler这3个相关的东西就行了,因为定时相关的就是围绕这3个东西展开的。 */ public void task() { SchedulerFactory facroty = new StdSchedulerFactory(); try { Scheduler scheduler = facroty.getScheduler(); JobDetail jobDetail = JobBuilder.newJob(SimpleJobDemo1.class) .withIdentity(new JobKey("job名称", "job组名称")).build(); JobDataMap newJobDataMap = new JobDataMap(); newJobDataMap.put("key1", "value1"); newJobDataMap.put("key2", "value2"); Trigger trigger = TriggerBuilder .newTrigger() // 添加身份标识,可以添加或不添加 .withIdentity(new TriggerKey("trigger名称", "trigger组名称")) .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(1).repeatForever()) // .withSchedule(CronScheduleBuilder.cronSchedule("")) .usingJobData(newJobDataMap) .startAt( // future将来的意思,futureDate就是将来的某个时间执行 DateBuilder.futureDate(2, IntervalUnit.SECOND)) .build(); Trigger trigger2 = TriggerBuilder .newTrigger() // 添加身份标识,可以添加或不添加 .withIdentity(new TriggerKey("trigger名称2", "trigger组名称2")) .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(2).repeatForever()) .startAt( // future将来的意思,futureDate就是将来的某个时间执行 DateBuilder.futureDate(5, IntervalUnit.SECOND)) .forJob(jobDetail).build(); scheduler.scheduleJob(jobDetail, trigger); scheduler.scheduleJob(trigger2);//同一个job添加多个trigger scheduler.start(); } catch (SchedulerException e) { e.printStackTrace(); } } }
发表评论
-
高效编写JAVA代码的几条建议(转)
2011-11-23 20:34 1371(1) 类名首字母应该大写 ... -
java正则表达式及java.util.regex包的学习
2011-11-16 22:34 24785没有事做,就会堕落。。 这个世界有太多的浮躁,要耐得住诱惑; ... -
quartz的配置(转自网络)
2011-11-16 20:18 1209周允许的是1-7 其中1 ... -
[转自网络]freeMarker的常用语法(以后可能会用到)
2011-11-16 09:48 1220常用语法 EG.一个对象BOOK 1.输出 $…{book ... -
freeMarker入门
2011-11-14 22:26 1566freeMarker是一个 JAVA开源模版引擎 下面以创建 ... -
java.util.logging包的学习
2011-11-11 22:07 1352package sunfa.lx; import jav ... -
mybatis中的一个OOXX
2011-11-08 15:11 1256mybatis : mybatis XML中执行多条语句: ... -
Timer和ScheduledExecutorService区别
2011-10-09 23:59 3243Timer里面的任务如果执行时间太长,会独占Timer对象,使 ... -
java io流之 装饰模式
2011-10-05 21:41 1163初学java.io的时候容易被众多的IO类搞晕头,其实java ... -
java nio学习笔记<一>
2011-10-05 21:04 1102package nio; import java.i ... -
java.util.concurrent.atomic.*包的体会
2011-10-01 18:10 1476java.util.concurrent.atomic.*包的 ... -
计算很大数组中List的和
2011-09-30 19:45 1100原帖地址: http://www.iteye.com/topi ... -
CountDownLatch、CyclicBarrier让多线程变得更简单
2011-09-29 16:54 1115CountDownLatch 一个同步辅助类,在完成一组正在其 ... -
山寨同步队列 VS 官方BT的ArrayBlockingQueue ,结果官方落马!!!
2011-09-29 15:30 1039官方的java.util.concurrent.ArrayBl ... -
突然发现自己的JAVA基础很差
2011-09-25 11:50 1172今天因为一个问题上网搜索却牵扯出了另一个问题。。。纠结。、、还 ... -
java_Comparable & Comparator
2011-09-21 23:21 1462java有2个非常重要的排序接口:java.lang.Comp ... -
tomcat,jboss部署方式(热部署)
2011-06-26 16:08 2845tomcat: 1、直接把项目web文件夹放在webapps里 ... -
JAVA书籍(IO多线程等)
2011-05-29 15:47 1025留下这些书,纪念我曾经走过的路。 -
java IO的学习总结
2011-05-29 15:31 10641、JAVA中的IO流分字节流和字符流 2、InputStre ... -
关于JAVA3D游戏(摘自网络)
2011-01-02 16:56 24112006年8月,我们终于决定用计算机三维视觉游戏机制制作自己的 ...
相关推荐
Quartz定时器是一个开源的作业调度框架,专为J2SE和J2EE应用程序设计,完全用Java编写。它的核心优势在于提供强大的灵活性和简单性,使得开发者可以轻松创建简单的或复杂的任务调度。Quartz支持多种特性,如数据库...
Quartz是一个广泛应用于Java开发中的开源定时调度框架,它的强大功能和灵活性使得开发者能够轻松地创建和管理定时任务。在本文中,我们将深入探讨Quartz的核心概念以及如何通过一个简单的例子来实现一个基础的定时器...
Quartz是一款功能强大的开源作业调度框架,常用于Java应用程序中,用以实现任务的定时执行。这个"一个简单的quartz定时器的demo"是展示如何在项目中集成和使用Quartz的基本步骤,包括创建任务、配置调度器以及管理...
首先,Quartz是一个功能强大的开源作业调度框架,它允许应用程序定义和调度任务,以便在特定时间执行。Spring与Quartz的集成使得在Spring应用中管理定时任务变得更加便捷。 要开始使用Spring的Quartz定时器,首先...
Quartz是开源的作业调度框架,它为Java应用程序提供了强大的定时功能。在Spring框架中集成Quartz,可以方便地创建和管理定时任务,使得开发者无需关注底层调度逻辑,专注于业务逻辑的实现。"quartz-2.1.6.zip"这个...
**一、Quartz入门** 要开始使用Quartz,首先需要下载Quartz的API库,并将其添加到项目的类路径中。通常,这包括主jar文件quartz-x.x.x.jar以及可能需要的core和optional目录下的其他jar文件。如果使用JDBCJobStore...
SSM框架是由Spring、Spring MVC和MyBatis三个开源项目组合而成的一个强大的Java Web开发框架。这个框架的主要目的是简化企业级应用的开发流程,提高开发效率。SSM框架的简易搭建是一个适合初学者入门的过程,涉及到...