quartz定时任务学习

上传人:第*** 文档编号:32817824 上传时间:2018-02-12 格式:DOC 页数:5 大小:43.50KB
返回 下载 相关 举报
quartz定时任务学习_第1页
第1页 / 共5页
quartz定时任务学习_第2页
第2页 / 共5页
quartz定时任务学习_第3页
第3页 / 共5页
quartz定时任务学习_第4页
第4页 / 共5页
quartz定时任务学习_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《quartz定时任务学习》由会员分享,可在线阅读,更多相关《quartz定时任务学习(5页珍藏版)》请在金锄头文库上搜索。

1、Quartz 定时任务学习(一)简单任务学习 quartz 首先了解三个概念:调度器:负责调度作业和触发器;触发器:设置作业执行的时间、参数、条件等;(简单触发器和 Cron 触发器)作业:定时任务内容,被执行的程序;下载必要的 jar 包,直接去官网下载,将 quartz-x.x.x.jar 和 core 和/或 optional 文件夹中的 jar 文件放在项目的文件夹或项目的类路径中Quartz 的几个核心的接口和类为:Job 接口:自己写的“定时程序”实现此接口的 void execute(JobExecutionContext arg0)方法,Job 还有一类为有状态的 Statef

2、ulJob 接口,如果我们需要在上一个作业执行完后,根据其执行结果再进行下次作业的执行,则需要实现此接口。Trigger 抽象类:调度类(Scheduler)在时间到时调用此类,再由 trigger 类调用指定的定时程序。Quertz 中提供了两类触发器为:SimpleTrigger,CronTrigger。前者用于实现比较简单的定时功能,例如几点开始,几点结束,隔多长时间执行,共执行多少次等,后者提供了使用表达式来描述定时功能,因此适用于比较复杂的定时描述,例如每个月的最后一个周五,每周的周四等。JobDetail 类:具体某个定时程序的详细描述,包括 Name,Group,JobDataM

3、ap 等。JobExecutionContext 类:定时程序执行的 run-time 的上下文环境,用于得到当前执行的 Job的名字,配置的参数等。JobDataMap 类:用于描述一个作业的参数,参数可以为任何基本类型例如 String,float 等,也可为某个对象的引用.JobListener,TriggerListener 接口:用于监听触发器状态和作业扫行状态,在特写状态执行相应操作。JobStore 类:在哪里执行定进程序,可选的有在内存中,在数据库中。开始:边看例题边学习,首先从简单触发器开始1、作业通过实现 org.quartz.job 接口,可以使 Java 类变成可执行的

4、。这个类用一条非常简单的输出语句覆盖了 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)

5、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 sched

6、uler = 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.setStart

7、Time(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

8、:47:53 阅读 79 评论 0 字号:大中小 订阅 需求:最近项目中要求实现这样的功能:系统运行时有两个任务;它们各自执行的操作不同,执行的开始时间和周期也不同;执行的开始时间和周期要求可以动态配置。如:任务一今天可以是 6 点运行,周期为每 2 个小时启动,也可能过一些天后任务一改为 8 点运行,周期为每 1 小时一次;任务二也有同样的需求;而且在这些改变的过程中程序要求自己判断这些参数是否改变,如果改变,则马上按新的要求运行任务;此过程中不允许系统重起。思路:分别建立三个时钟,也就是三个任务。任务三是时刻(每 10sec 扫描一次)监视配置参数是否改变,如果改变的话,则判断新的配置种所

9、修改的启动时间是否在今天是否已经过去,如果时间已经过去则默认为任务从明天开始执行,同时把先前的任务停止,同时启动新的计划任务。实现: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.printl

10、n(启动定时任务 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

11、 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() /具体任

12、务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 Bu

13、fferedReader(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();/关闭 BufferedR

14、eader 对象 fr.close();/关闭文件if(task1IsChange)task1Stop();task1Start();if(task2IsChange)task2Stop();task2Start(); catch (FileNotFoundException e) e.printStackTrace();catch (IOException e) e.printStackTrace();Java 操作系统中定时任务的实现方法一种操作系统中定时任务的实现方法,其特征在于:)基本数据结构任务标识号任务标识号用来标识任务,起到任务名的作用,它的取值范围为,两个任务不能有相同的非零标

15、识号,但唯独标识号为零的任务可以有多个;实时任务的状态根据任务的状态,将实时任务的状态分成运行状态、就绪状态、挂起状态、潜伏状态运行状态:任务获得处理机,正在运行;就绪状态:只要获得处理机,任务即可运行;挂起状态:由于某种原因,任务即使得到处理机也无法继续执行,只有待此种原因撤销后,任务才有获得处理机的权利;潜伏状态:任务建立之前和撤销以后的状态;实时任务的优先级任务的状态是调度时决定任务能否被选中投入运行的主要依据;就绪任务取得处理机的先后次序是由任务的优先级来规定的;任务控制块任务控制块是任务的标志,任务系统根据任务控制块而感知任务的存在,各种任务调用命令的操作对象就是任务的任务控制块;任务控制块是表征任务存在的唯一实体,当任务系统收回了任务的任务控件块后,任务就被撤销了,当建立一个新任务时,任务系统为它分配一个空的任务控制块,并填入此任务有关的外部特性信息,这时任务便存在于系统之中;任务系统对于各个任务进行调度、控制和管理,也都是根据每个任务的任务控制块进行的;任务控制块队列按任务的执行情况,根据任务的优先级将任务控制块组织成三种任务控制块队列:活动队列、就绪队列、空队列;用户任务排队表实时任务将它与时间有关的信息记录在用户

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号