- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Java之Scheduler
Java 之 Scheduler演讲人:技术部——Tommy概况 综观目前的 Web 应用,多数应用都具备任务调度的功能。接下来介绍了几种任务调度的 Java 实现方法,包括 Timer、Scheduler、 Quartz 以及 JCron Tab,并对其优缺点进行简单比较,目的在于给需要开发任务调度的程序员提供有价值的参考。三类任务调度实现方式TimerScheduledExecutor开源工具包(Quartz, JCronTab)1.Timer用到的类有java.util.Timer、java.util.TimerTask。其中要执行的任务需要继承TimerTask并复写相应的方法。以下为使用时的代码:(其中的TimerTest 为继承TimerTask的任务) Timer timer = new Timer(); ?long delay1 = 1 * 1000; ?long period1 = 1000; ?// 从现在开始 1 秒钟之后,每隔 1 秒钟执行一次 job1 ?timer.schedule(new TimerTest(job1), delay1, period1); ?long delay2 = 2 * 1000; ?long period2 = 2000; ?// 从现在开始 2 秒钟之后,每隔 2 秒钟执行一次 job2 ?timer.schedule(new TimerTest(job2), delay2, period2); 1.Timer 的优缺点Timer 的优点在于简单易用,但由于所有任务都是由同一个线程来调度,因此所有任务都是串行执行的,同一时间只能有一个任务在执行,前一个任务的延迟或异常都将会影响到之后的任务。2.ScheduleExecutor鉴于 Timer 的上述缺陷,Java 5 推出了基于线程池设计的 ScheduledExecutor。其设计思想是,每一个被调度的任务都会由线程池中一个线程去执行,因此任务是并发执行的,相互之间不会受到干扰。需要注意的是,只有当任务的执行时间到来时,ScheduedExecutor 才会真正启动一个线程,其余时间 ScheduledExecutor 都是在轮询任务的状态。常用的调用方法: ScheduleAtFixedRate?——每次执行时间为上一次任务开始起向后推一个时间间隔ScheduleWithFixedDelay——每次执行时间为上一次任务结束起向后推一个时间间隔2.ScheduleExecutor调度任务的类需要实现Runnable接口,代码如下: ScheduledExecutorService service = Executors.newScheduledThreadPool(10);? long initialDelay1 = 1; long period1 = 1; // 从现在开始1秒钟之后,每隔1秒钟执行一次job1 service.scheduleAtFixedRate(new ScheduledExecutorTest(job1), initialDelay1,period1,TimeUnit.SECONDS);? long initialDelay2 = 1; long delay2 = 1; // 从现在开始2秒钟之后,每隔2秒钟执行一次job2 service.scheduleWithFixedDelay(new ScheduledExecutorTest(job2), initialDelay2,delay2,TimeUnit.SECONDS);3.开源工具包工具包有:Quartz、JCronTabQuartz 可以满足更多更复杂的调度需求。(接下来主要讲这个)Crontab 是一个非常方便的用于 unix/linux 系统的任务调度命令。JCronTab 则是一款完全按照 crontab 语法编写的 java 任务调度工具。3.开源工具包( quartz )调度任务的类继承于 org.quartz.Job,并且复写相关方法,其中的QuartzTest为job实现类。1)创建一个Scheduler?SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory();?Scheduler sched = schedFact.getScheduler();?sched.start();2)创建一个JobDetail,指明name,groupname,及具体的Job类名,该Job负责定义需要执行任务?JobDetail jobDetail = new JobDetail(myJob, myJobGroup,QuartzTest.class)
您可能关注的文档
- ITIL理论(自译).doc
- ITC大楼中国电子自评报告.docx
- ITP文件V.doc
- iTRAQ简介8.ppt
- It‘s time句型的用法.pptx
- IT技术者日本语面接によく出る100质问.doc
- IT转型之旅:VMware运维管理服务介绍.pptx
- ITC-小区公共广播系统方案设计说明书.doc
- IWE材料复习试题及答案.doc
- IWE生产复习试题及答案.doc
- 护理查房中的患者舒适度提升策略.ppt
- 新能源行业光伏发电系统设计与实施.pdf
- 新能源行业储能设备维护与管理方案.pdf
- 八年级上册英语Unit 2词汇与句型练习.pdf
- 新能源与可再生能源产业发展的经济法思考.pdf
- 新人教版(2024版)七年级上学期数学课时进阶测试22有理数的乘法与除法(二阶)(附答案解析).pdf
- 新人教版(2024版)七年级上学期数学课时进阶测试31代数式(二阶).pdf
- 新人教版高中英语选择性必修第二册同步课时强化训练Unit 2 Period One Reading and Thinking—Comprehending.pdf
- 新人教版高中英语选择性必修第二册同步课时强化训练Unit 4 Period One Reading and Thinking—Comprehending.pdf
- 护理查房中的心理护理技巧.ppt
原创力文档


文档评论(0)