范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Quartz运务调度,看完这篇就够了

  Quartz简介
  Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer, Quartz增加了很多功能:
  持久性作业 - 就是保持调度定时的状态;
  作业管理 - 对调度作业进行有效的管理;Quartz运行环境。Quartz 可以运行嵌入在另一个独立运行的程序中。Quartz可以在应用程序服务器(或servlet容器中)被实例化,并且参与事务。Quartz 可以作为一个独立的应用程序运行。可以通过RMI使用。Quartz 可以被实例化,作为独立的项目集群,用于任务执行。Quartz的设计模式。Builder模式Factory模式,工厂模式组件模式链式模式Quartz的核心概念
  1.任务job
  Job就是你想要实现的任务类。每一个Job必须实现的org.quartz.job接口。且需实现接口的Execute()方法。
  2.触发器Trigger
  Trigger为你执行任务的触发器,比如你想每天定时8点钟去打卡,Trigger就会设置在8点钟去执行该任务。
  Trigger主要有2种触发器器,分别为SimpleTrigger ,CornTrigger两种。
  3.调度器Scheduler
  Scheduler为任务调度器,它将任务Job和触发器Trigger整合起来。负责基于Trigger设定的时间来执行job。Quartz的体系结构
  开启一个Quartz项目
  1.依赖     org.quartz-scheduler     quartz 
  2.编写jobpackage com.keelon.quz.demo.job; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import java.text.SimpleDateFormat; import java.util.Date; public class MyJob implements Job {     @Override     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {         //输出当前的时间的任务         Date date = new Date();         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd HH:MM:SS");         String dateStr = formatter.format(date);         System.out.println("正在进行数据库备份"+"时间是:"+dateStr);      } }
  3.调用。package com.keelon.quz.demo.job;  import org.quartz.*; import org.quartz.impl.StdSchedulerFactory;  public class TestJob {      public static void main(String[] args) throws SchedulerException {         Scheduler scheduled = StdSchedulerFactory.getDefaultScheduler();         JobDetail jobDetailb = JobBuilder.newJob(MyJob.class).withIdentity("job1","group1").build();         Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1").startNow()                 .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever()).build();         scheduled.scheduleJob(jobDetailb,trigger);         scheduled.start();     } }JobExecutionContext
  JobExecutionContext 是一个包含了各种上下文信息的句柄,指向执行中的JobDetail 实例 和 执行完成的Trigger实例
  当Schedule调用一个Job时,就会将JobExecutionContext传递给Job的exceute()方法。
  Job能够通过JobExecutionContext对象访问到Quartz运行时候的环境以及Job本身的数据明细。我可以通过这个context来访问Trigger,Jobs相关的信息。  JobKey jobKey = jobExecutionContext.getJobDetail().getKey();  log.info("工作任务的名称",jobKey.getName());   TriggerKey triggerKey =jobExecutionContext.getRecoveringTriggerKey();   log.info("工作任务的工作组的名称",jobKey.getName()); JobDataMap介绍
  1.使用Map获取
  在进行任务调度时,JobDataMap存储在JobExecutionContext中非常方便的进行获取。
  jobDataMap可以装载任何可序列化的对象。当job实例对象被执行的时候,这些参数会传递给Job
  放入参数Scheduler scheduled = StdSchedulerFactory.getDefaultScheduler(); JobDetail jobDetailb = JobBuilder.newJob(MyJob.class).withIdentity("job1","group1").usingJobData("message","jobs").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1").startNow()         .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5)).usingJobData("message","这是trigger").build(); scheduled.scheduleJob(jobDetailb,trigger); scheduled.start();
  取出参数String msg = jobExecutionContext.getJobDetail(). getJobDataMap().getString("message");Job有状态和无状态
  Job中有一个StatefulJob子接口,代表着有状态的任务, 该接口是一个没有方法的标签接口 ,其目的就是让Quartz知道任务的类型,以便采用不同的执行方案。 @DisallowConcurrentExecution 不允许并发执行,即JOB为串行执行。@PersistJobDataAfterExecution 在执行后将JobData持久化。
  无状态任务在执行时,拥有自己的JobDataMap拷贝,每次执行时,都会创建一个新的实例,对JobData的更改不会影响下次的执行。而有状态任务共享同一个JobDataMap实例,每次任务执行对JobDataMap所做的更改都会保存下来,后面的执行可以看到这个更改。也就是每次执行任务后都会对后面的执行发生影响。
  正因为这个原因,无状态的Job可以并发执行,而有状态的StatefulJob不能并发执行。CronTrigger触发器
  如果你需要像日历一样,按照日程来触发任务,而不是像SimpleTrigger那样每隔定时间来触发,CornTrigger更加的实用。因为他是基于日历的作业调度器。
  使用CronTrigger,你可以指定"每个周五中午",或者每个工作日的十点钟。或者每周一,像这样的日程安排触发。
  1.Cron Expression -Cron表达式
  Cron表达式是来配置,CronTrigger实例。Cron表达式是有7个子表达式组成的字符串,每个表达式都描述了一个单独的日程细节。这些表达式用空格来分割。分别表示如下
  1.Second 秒
  2.Minutes 分钟
  3.Hours小时
  4 Day of Month 月中的每天
  5 Month 月
  6 Day of Week 周中某天
  7 Year 年
  例如下面写一个每个9月19号,每5秒执行一次。Date startDate = new Date(); startDate.setTime(startDate.getTime()+5000);  Date endDate = new Date(); endDate.setTime(endDate.getTime()+10000);  Scheduler scheduled = StdSchedulerFactory.getDefaultScheduler(); JobDetail jobDetailb = JobBuilder.newJob(JobTrigger.class).withIdentity("job1","group1").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1","group1").startAt(startDate).endAt(endDate)         .withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * 19 9 ?")).build(); scheduled.scheduleJob(jobDetailb,trigger); scheduled.start();

科创板的机会到来了吗?科创50又回到了1209,早已跌破2018年开板时的低点。两大龙头中芯国际和金山办公,均已回到前期低价区域。科创板是新板,国内没有历史参照,可以看一看比尔盖茨和纳斯达克的历史。纳斯汇总下关于安全的13款必备工具汇总下关于安全的几款必备工具1burpsuiteBurpSuite是用于攻击web应用程序的集成平台,http协议分析神器,里面包括了不少安全必备的功能,重放爆破扫描并且支持自定义电商不得以商品拆封为由拒绝7日无理由退货最高法发布网络消费纠纷案件司法解释电商不得以商品拆封为由拒绝7日无理由退货为正确审理网络消费纠纷案件,依法保护消费者合法权益,促进网络经济健康持续发展,最高人民法院审判委员会第18京东收购德邦的消息引发网友热议,本周谜底将揭晓顶端新闻河南商报首席记者吴军文图2022年3月2日,对于快递物流行业来说,是充满悬念的一天。京东收购德邦的消息此前已飞了一段时间,又有了最新进展有消息称,近日京东已经完成对德邦快递华为新机Mate40EPro5G搭载麒麟9000L今日开售,屏幕或不输三星据悉今天上午1008,华为Mate40EPro5G在华为商城开售,支持5G全网通,同时搭载了麒麟9000L处理器,8GB内存,256GB机身存储,售价6499元。一经开售,火爆市场activiti中的网关是干什么的?网关用于控制流程走向,根据功能不同可以划分为以下4种网关排他网关用来对流程中的决定进行建模,流程执行到该网关时,按照输出流的顺序逐个计算,当条件为true时,继续执行当前网关的输出算法推荐不是不可以,要有一个平衡点算法推荐不是不可以,要有一个平衡点吧,百分之几十是推荐的,剩下的是当下热点或者什么的,别你看一样,接下来的全是这样的。原来就有,只不过要自己关闭,有的还故意把设置藏在不明显处,让你降噪出色,音质优秀,PXN莱仕达SenseBudsX2降噪耳机作为一位普通上班族,空闲之余,我会拿起手机玩玩游戏,听听音乐来放松一下紧张的工作心情。相对于使用手机内置的喇叭来说,我更喜欢戴上蓝牙耳机去听歌玩游戏和看影片,不但音质有很大的提升,斯泰得乐Oskar加湿器开箱体验都说冬季的气候是比较干燥的,人的皮肤水分也容易流失,会让你加速衰老,只有湿润的空气才能保持生机盎然,所以在冬季你必须要有一台加湿器来帮你滋润皮肤,同时也促进面部细胞血液循环和新陈代哔哩哔哩2021年总净收入194亿四季度月活达2。717亿中华网财经3月3日讯,哔哩哔哩公布2021年第四季度和财年财务业绩2021财年财务业绩总净收入为194亿元人民币,较2020年增长62。手机游戏收入为人民币51亿元,较2020年增快讯丨今年两会,沈南鹏带来5份提案每经记者李蕾每经编辑肖芮冬阳春三月,全国两会即将开启。每日经济新闻获悉,作为唯一一位来自创业投资领域的全国政协委员,红杉中国创始及执行合伙人沈南鹏今年是第五次参加全国两会。今年他带
2021年,5G到底用在哪里?说到4g,因为目前国内运用的4g网络都是cat34级别的设备,而在iphonex上市时支持最高网络速度是cat9也就是450M的网络速度,实际是56m的实际下载速度,500M左右的头条的站外首发证明有什么用?完善了站外首发证明效果就是不一样!没完善之前不论我发什么样的文章,推荐量总是少得可怜,文章经历了十多天,展现量也不会过万,不信请看下图!之前也不知道平台为啥不给推荐,自己也感觉文章同是做手机,为什么消费者更愿意为荣耀买单?想看有趣又有料的数码科技资讯,点击右上角关注吧,微头条互动有抽奖哦我不觉得更多消费者愿意为荣耀买单,不过并不代表荣耀不是一个值得购买的品牌。和老大哥华为相比,荣耀自打开始就有着明确终止IPO,依图的落寞是否会成为四小龙的终局?证监会提出的存在47个问题,等等,比较突出就是亏损占比高,这个高,就证明该公司现在没有盈利,一直在亏损,根据提交的财务数据,从2017年到2020年已经累计亏损60多亿,亏损一直在外媒AMD线程撕裂者5000系列将于8月发布,xGMI达18GTsIT之家7月11日消息今年5月份,有爆料者称AMD线程撕裂者5000系列搭载Zen3架构核心,代号Chagal,将于今年8月发布,9月开售。近日,外媒MoePC放出了一张路线图,并继发热续航差的问题解决之后,鸿蒙系统迎来了新的问题了解更多科技资讯尽在圈聊科技。今天跟大家聊一聊鸿蒙的第二波差评来了,发热续航差解决后,出现了新的问题。鸿蒙系统最早发布于2019年,虽然当时并不能使用于手机上,但已经吸引了众多国人华为鸿蒙交出成绩单,用户已达3000万,国产厂商却依旧保持沉默鸿蒙交出亮眼成绩单对于鸿蒙,国人消费者无不感到骄傲,这是中国首款真正意义上的操作系统。在历史上,国内外的许多厂商都曾研发过操作系统,但是只有美国谷歌和苹果成功了,其余的无一例外全部腾讯员工我211毕业觉得写代码难,为啥三本能写代码考不上211?人类的智商是根据环境和其它因素不断改变的,正常人的智商其实都差不多在同一水平上,而有的人后天努力学习,从而不断突破自我,变成了天才。哪有什么与生俱来的天才脑子,只有自己不断地学习于试点强制下班更应拒绝常态化加班作者郑桂灵近日,一家互联网企业试点每周三强制下午6点下班的话题冲上了热搜。这家互联网头部企业的似乎反向的操作引发热议,有人表示支持,有人认为这本就是劳动者应有的权利。相较于互联网企2亿用户无悬念了!华为鸿蒙一个月内破了3000万自从鸿蒙系统上线开始,国内外网友就没停止过对它的讨论,许多网友将其看作是有机会与IOS和安卓争夺市场份额,也有人对它的发展前景表示担忧。作为国内第一款自主研发的手机操作系统,鸿蒙注用户数量超三千万,华为公布下一批鸿蒙系统升级机型上个月初,华为在HarmonyOS2及华为全场景新品发布会上,正式推出了备受瞩目的鸿蒙2。0版本。并于发布次日凌晨为包括华为Mate40系列华为P40系列在内的多款机型进行了内测版