




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Quartz定时任务学习(一)简单任务学习quartz首先了解三个概念:调度器:负责调度作业和触发器;触发器:设置作业执行的时间、参数、条件等;(简单触发器和Cron触发器)作业:定时任务内容,被执行的程序;下载必要的jar包,直接去官网下载,将quartz-x.x.x.jar 和core 和/或 optional 文件夹中的 jar 文件放在项目的文件夹或项目的类路径中Quartz的几个核心的接口和类为:Job接口:自己写的“定时程序”实现此接口的void execute(JobExecutionContext arg0)方法,Job还有一类为有状态的StatefulJob接口,如果我们需要在上一个作业执行完后,根据其执行结果再进行下次作业的执行,则需要实现此接口。Trigger抽象类:调度类(Scheduler)在时间到时调用此类,再由trigger类调用指定的定时程序。Quertz中提供了两类触发器为:SimpleTrigger,CronTrigger。前者用于实现比较简单的定时功能,例如几点开始,几点结束,隔多长时间执行,共执行多少次等,后者提供了使用表达式来描述定时功能,因此适用于比较复杂的定时描述,例如每个月的最后一个周五,每周的周四等。JobDetail类:具体某个定时程序的详细描述,包括Name,Group,JobDataMap等。JobExecutionContext类:定时程序执行的run-time的上下文环境,用于得到当前执行的Job的名字,配置的参数等。JobDataMap类:用于描述一个作业的参数,参数可以为任何基本类型例如String,float等,也可为某个对象的引用.JobListener,TriggerListener接口:用于监听触发器状态和作业扫行状态,在特写状态执行相应操作。JobStore类:在哪里执行定进程序,可选的有在内存中,在数据库中。开始:边看例题边学习,首先从简单触发器开始1、作业通过实现 org.quartz.job 接口,可以使 Java 类变成可执行的。这个类用一条非常简单的输出语句覆盖了 execute(JobExecutionContext context) 方法。import java.util.Date;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;public class SimpleQuartzJob implements Job public SimpleQuartzJob() public void execute(JobExecutionContext context) throws JobExecutionException System.out.println(In SimpleQuartzJob - executing its JOB at + new Date() + by + context.getTrigger().getName(); 2、触发器和调度器public void task() throws SchedulerException /通过SchedulerFactory来获取一个调度器 SchedulerFactory schedulerFactory = new StdSchedulerFactory(); Scheduler scheduler = schedulerFactory.getScheduler(); /引进作业程序 JobDetail jobDetail = new JobDetail(jobDetail-s1, jobDetailGroup-s1, SimpleQuartzJob.class); /new一个触发器 SimpleTrigger simpleTrigger = new SimpleTrigger(simpleTrigger, triggerGroup-s1); /设置作业启动时间 long ctime = System.currentTimeMillis(); simpleTrigger.setStartTime(new Date(ctime); /设置作业执行间隔 simpleTrigger.setRepeatInterval(10000); /设置作业执行次数 simpleTrigger.setRepeatCount(10); /设置作业执行优先级默认为5 /simpleTrigger.setPriority(10); /作业和触发器设置到调度器中 scheduler.scheduleJob(jobDetail, simpleTrigger); /启动调度器 scheduler.start(); 一个简单的quartz任务就完成了java定时任务及对任务监视的实现 默认分类 2008-03-12 11:47:53 阅读79 评论0 字号:大中小订阅 需求:最近项目中要求实现这样的功能:系统运行时有两个任务;它们各自执行的操作不同,执行的开始时间和周期也不同;执行的开始时间和周期要求可以动态配置。如:任务一今天可以是 6点运行,周期为每2个小时启动,也可能过一些天后任务一改为8点运行,周期为每1小时一次;任务二也有同样的需求;而且在这些改变的过程中程序要求自己判断这些参数是否改变,如果改变,则马上按新的要求运行任务;此过程中不允许系统重起。思路:分别建立三个时钟,也就是三个任务。任务三是时刻(每10sec扫描一次)监视配置参数是否改变,如果改变的话,则判断新的配置种所修改的启动时间是否在今天是否已经过去,如果时间已经过去则默认为任务从明天开始执行,同时把先前的任务停止,同时启动新的计划任务。实现:private Timer timer1;private Timer timer2;private Timer timer3;private Task1 task1=null;private Task2 task2=null;public void task1Start()System.out.println(开始启动定时任务1.); task1=new Task1(); timer1.schedule(task1,开始时间,周期)System.out.println(启动定时任务1完毕!);System.out.println();public void task2Start()System.out.println(开始启动定时任务2.); task2=new Task2(); timer2.schedule(task2,开始时间,周期)System.out.println(启动定时任务2完毕!);System.out.println();public void task1Stop()System.out.println(开始停止任务1.);task2.cancel(); System.out.println(任务1已经停止!);public void task2Stop()System.out.println(开始停止任务2.);task2.cancel(); System.out.println(任务2已经停止!);public void task3Start()System.out.println(开始启动监视任务.);timer3.schedule(new ConfigCheckTask(),0,10 * 1000);System.out.println(启动监视完毕!);System.out.println();class Task1 extends TimerTask public void run() /具体任务class Task1 extends TimerTask public void run() /具体任务class ConfigCheckTask extends TimerTask public void run() checkConfigParameter();private void checkConfigParameter()FileReader fr;try fr = new FileReader(getThisClassDirectory()+jobconf.txt); /建立BufferedReader对象,并实例化为br BufferedReader br=new BufferedReader(fr); /从文件读取一行字符串 String line=br.readLine(); boolean task1IsChange=false; boolean task2IsChange=false; while(line!=null) line=line.trim(); int pos=line.indexOf(=); /读取配置,然后比较是否改变,处理task1IsChange和task2IsChange的状态 task1IsChange=true; task2IsChange=true; line=br.readLine(); br.close();/关闭BufferedReader对象 fr.close();/关闭文件 if(task1IsChange) task1Stop(); task1Start(); if(task2IsChange) task2Stop(); task2Start(); catch (FileNotFoundException e) e.printStackTrace();catch (IOException e) e.printStackTrace();Java操作系统中定时任务的实现方法一种操作系统中定时任务的实现方法,其特征在于:)基本数据结构任务标识号任务标识号用来标识任务,起到任务名的作用,它的取值范围为,两个任务不能有相同的非零标识号,但唯独标识号为零的任务可以有多个;实时任务的状态根据任务的状态,将实时任务的状态分成运行状态、就绪状态、挂起状态、潜伏状态运行状态:任务获得处理机,正在运行;就绪状态:只要获得处理机,任务即可运行;挂起状态:由于某种原因,任务即使得到处理机也无法继续执行,只有待此种原因撤销后,任务才有获得处理机的权利;潜伏状态:任务建立之前和撤销以后的状态;实时任务的优先级任务的状态是调度时决定任务能否被选中投入运行的主要依据;就绪任务取得处理机的先后次序是由任务的优先级来规定的;任务控制块任务控制块是任务的标志,任务系统根据任务控制块而感知任务的存在,各种任务调用命令的操作对象就是任务的任务控制块;任务控制块是表征任务存在的唯一实体,当任务系统收回了任务的任务控件块后,任务就被撤销了,当建立一个新任务时,任务系统为它分配一个空的任务控制块,并填入此任务有关的外部特性信息,这时任务便存在于系统之中;任务系统对于各个任务进行调度、控制和管理,也都是根据每个任务的任务控制块进行的;任务控制块队列按任务的执行情况,根据任务的优先级将任务控制块组织成三种任务控制块队列:活动队列、就绪队列、空队列;用户任务排队表实时任务将它与时间有关的信息记录在用户任务排队表;定时任务链一个作业中所有定时任务的任务控制块串成一个链,链中各定时任务任务控制块的排队原则为:根据任务定时时间由小到大顺序排列,定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 豚的拼音课件app
- 2025年北京市民间个人租赁无人机培训借款合同样本
- 2025年度智能家电研发生产三人股份合作合同
- 2025年度高品质不锈钢板材进出口贸易合同书
- 2025保姆家庭营养膳食及健康管理服务合同
- 2025版全株青贮玉米种植与收购农村电商合作合同范本
- 2025年生物质燃料供应与购买框架合同范本
- 2025年度轻钢结构建筑安全检测与维护合同
- 2025年智能家居采购与安装一体化服务合同范本
- 语言文字知识培训总结课件
- 消防监控考试题初级及答案
- 2025年湖南湘西自治州州直事业单位招聘考试笔试试卷附答案
- 《小学开学第一课》课件
- 2025-2031年中国有源相控阵雷达行业市场发展形势及投资潜力研判报告
- 大货车货运安全知识培训课件
- 消防车辆事故课件
- 2026届四川省宜宾市普通高中高一化学第一学期期末统考试题含解析
- 《路由与交换技术》课程教学大纲
- 北师大版八年级数学上册教案(全册完整版)教学设计含教学反思
- 国家自然科学基金联合申报协议书
- 新教科版五年级科学上册全册课件(精品PPT)
评论
0/150
提交评论