Java之Scheduler.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

文档评论(0)

整理王 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档