




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、cron4j 2.2 介绍索引1. 快速入门2. 调度模式3. 如何安排,重新安排和deschedule任务4. 如何安排一个系统进程5. 如何安排从一个文件的过程6. 建立自己的任务7. 建立你自己的收藏家8. 建立自己的调度监听9. 执行人10. 手动任务发射11. 使用时区12. 守护线程13. 预测14. cron的解析器1。 快速入门cron4j的主体是调度 。 你与 it.sauronsoftware.cron4j.Scheduler 实例可以执行任务,在固定的时刻,在所有的一年。 调度器可以执行任务,一次一分钟,每五分钟
2、一次,星期五上午10时,于2月16日12时30分,但只有当它是星期六,等等。在使用的cron4j调度是一个四个步骤操作:1. 创建您的 Scheduler 实例。2. 安排你的行动。 你一定要告诉调度它做 什么 , 当 调度一个动作。 您可以指定 什么 用 java.lang.Runnable的 或 it.sauronsoftware.cron4j.Task 例如,您可以指定使用的调度模式,它可以代表一个字符串或一个 it.sauronsoftw
3、are.cron4j.SchedulingPattern 实例。3. 启动调度。4. 停止调度,当你不需要它了。想一下这个简单的例子:import it.sauronsoftware.cron4j.Scheduler;public class Quickstart public static void main(String args) / Creates a Scheduler instance.Scheduler s = new Scheduler();/ Schedule a once-a-minute task.s.schedule("* * * * *"
4、, new Runnable() public void run() System.out.println("Another minute ticked away."););/ Starts the scheduler.s.start();/ Will run for ten minutes.try Thread.sleep(1000L * 60L * 10L); catch (InterruptedException e) ;/ Stops the scheduler.s.stop();这个例子十分钟运行。 在每分钟的变化,它会打印的悲哀(但真实)消息:“一分钟
5、一分地过去.”。其他一些关键的概念:· 你可以安排你想要多少任务。· 你可以安排一个任务,当你想,调度后也已启动。· 你可以改变一个已计划的任务调度模式,也同时调度运行( 改期 运作)。· 您可以删除以前预定的任务,也同时调度运行(deschedule操作)。· 您可以启动和停止调度,你想多少次。· 你可以安排从一个文件。· 你可以安排你想从任何来源。· 您可以提供听众调度,以便接收有关执行任务的事件。· 你可以控制任何正在进行的任务。· 您可以手动启动一个任务,而无需使用一
6、个调度模式。· 你可以改变的调度工作时区。· 您可以验证他们使用前调度的调度模式。· 可以预测的调度模式时会导致任务执行。返回索引2。 调度模式一个UNIX的crontab状花纹是五个空间分离的部分分割字符串。 每个部分的目的是:1. 分钟子模式 。 在此期间,小时分钟的任务已经启动? 值的范围是从0到59。2. 时间子模式 。 在一天的时间应的任务已经启动? 值的范围是从0到23。3. 天月子模式 。 在这天的月份任务已经启动? 值的范围是从1到31。&
7、#160;可以使用的“L”的特殊价值,认识到每月的最后一天。4. 个月的子模式 。 其间个月的一年,任务已经启动? 值的范围是从1(一月)到12(十二月),否则这个子模式允许别名“一月”,“二月”,“三月”,“年利率”,“五一”,“君”,“七月” ,“AUG”,“SEP”,“华侨城”,11月“和”DEC“。5. 天周子模式 。 在一周天的任务已经启动? 值的范围是从0(星期日)至6日(星期六),否则这个子模式允许别名“太阳”,“星期一”,“星期二”,“结婚”,“四”,“五”和“星期六” 。明星通配符也承认,表示“每分钟一小时”,“每隔
8、一小时一天”,“一个月的每一天”,“每一年中的月份”,“一周的每一天”,根据使用它的子模式。一旦启动调度,任务将推出五个部分,在它的调度模式时,将在同一时间的真实。调度模式可以代表 it.sauronsoftware.cron4j.SchedulingPattern 实例。 无效的调度模式原因 it.sauronsoftware.cron4j.InvalidPatternException 小号。 SchedulingPattern类还提供一个静态validate(String) 的方法,可以用来验证一个字符串之前使用它作为
9、一个调度模式。一些例子:5 * 这种模式导致每隔一小时,在开始的五分钟(00:05,01:05,02:05等),将推出一项任务。* 这种模式导致将推出每分钟的任务。* 12 *星期一 这种模式导致在周一的12小时将推出每分钟的任务。* 12 16 *星期一 这种模式导致任务将推出每分钟在16日(星期一),12小时,但只有一天是本月16日。每个子模式可以包含两个或两个以上的逗号分隔值。59 11 * 1,2,3,4,5 这种模式导致发射任务,以11:59在周一,周二,周三,周四和周五上午。值的时间间隔是承认和使用减号字符定义。59 11 * 1-
10、5 这种模式相当于前一个。可以使用斜线字符识别步骤值的范围内。 它可以使用的形式* / c和AB / C。 子模式匹配每一个C值的范围0,MAXVALUE或AB。* / 5 * 这种模式导致一个任务将推出每5分钟(0:00,0:05,0:10,0:15等)。3-18/5 * 这种模式导致任务即将推出每5分钟从第三分钟,18小时(0时03分,0点08 0点13分,0时18分,1:03,1:08左右开始上)。* / 15 9-17 * 这种模式导致任务之间的一天(9:00,9:15,9:30,9点45等等.注意,最后的执行将在第9和第17
11、小时,每15分钟将推出17:45)。所有新鲜的描述语法规则可以一起使用。* 12 10-16/2 * 这种模式导致将推出每分钟在一天12小时的任务,但只有一天是10日,12月14日或16日。* 12 1-15,17,20-25 * 这种模式导致将推出每分钟在一天12小时的任务,但必须在1日和15日,第20和25,或者至少是它必须是17月的一天。最后cron4j让你合并成一个管道字符,更多的调度模式:0 5 * 8 10 * | 22月17日* 这种模式导致任务,每天05:00,10:08和17:22将推出。返回索引3。 如何安排,重新安排和desched
12、ule任务最简单的方式来建立一个任务是落实知名java.lang.Runnable接口。 一旦我们的任务是准备好了,它可以与it.sauronsoftware.cron4j.Scheduler.schedule(String, Runnable)法。此方法抛出一个 it.sauronsoftware.cron4j.InvalidPatternException 时所提供的字符串不表示一个有效的调度模式。另一种方式来建立一个任务是扩大的 it.sauronsoftware.cron4j.Task 抽象类,这是更强大,让开发人员访问其他一些cron
13、4j功能。 这是更好地讨论“ 建设自己的任务 “段。 任务实例可以预定的 schedule(String, Task) 和 schedule(SchedulingPattern, Task) 方法。在调度的调度方法总是返回一个ID用来识别和检索预定的操作。 这个ID可以用来以后重新安排任务(改变其调度模式)reschedule(String, String) 或 reschedule(String, SchedulingPattern) 方法,并与任务
14、(删除任务调度)deschedule(String) 方法。也可以用相同的ID检索预定任务调度模式,与 getSchedulingPattern(String) 的方法,或检索与任务本身,getTask(String) 方法。返回索引4。 如何安排一个系统进程系统进程,可以很容易地计划使用 ProcessTask 类:ProcessTask task = new ProcessTask("C:WindowsSystem32notepad.exe");Scheduler scheduler =
15、new Scheduler();scheduler.schedule("* * * * *", task);scheduler.start();可以提供使用,而不是一个单一的命令字符串的字符串数组参数的过程:String command = "C:WindowsSystem32notepad.exe", "C:File.txt" ;ProcessTask task = new ProcessTask(command);/ .使用第二个字符串数组,其元素的名称=值的形式,可以提供过程中的环境变量:String command = &qu
16、ot;C:tomcatbincatalina.bat", "start" ;String envs = "CATALINA_HOME=C:tomcat", "JAVA_HOME=C:jdksjdk5" ;ProcessTask task = new ProcessTask(command, envs);/ / .使用构造函数中的第三个参数,可以改变默认的工作目录的过程中:String command = "C:tomcatbincatalina.bat", "start" ;Strin
17、g envs = "CATALINA_HOME=C:tomcat", "JAVA_HOME=C:jdksjdk5" ;File directory = "C:MyDirectory"ProcessTask task = new ProcessTask(command, envs, directory);/ .如果你想改变默认的工作目录,但你有没有任何环境变量的构造ENVS的参数可以被设置为 null:ProcessTask task = new ProcessTask(command, null, directory);当E
18、NVS是空的进程继承当前JVM的每个环境变量:设置环境变量和工作目录,也可以调用的 setEnvs(String) 和 setDirectory(java.io.File) 方法。进程的标准输出和标准错误的渠道,可以重定向到文件中所使用的 setStdoutFile(java.io.File) 和 setStderrFile(java.io.File) 方法:ProcessTask task = new ProcessTask(command, envs, directory);task.setStdo
19、utFile(new File("out.txt");task.setStderrFile(new File("err.txt");标准输入通道在siminal的方式,可以读取从现有的文件,调用 setStdinFile(java.io.File) 方法:ProcessTask task = new ProcessTask(command, envs, directory);task.setStdinFile(新文件(“in.txt”);5。 如何安排从一个文件的过程cron4j调度,还可以安排一组从一个文件的过程。你必须准
20、备一份文件,由UNIX的crontab中使用的非常相似,并登记在调用调度 scheduleFile(File) 的方法。 该文件可以descheduled通过调用 descheduleFile(File) 的方法。 预定的文件可以被检索通过调用的 getScheduledFiles() 的方法。预定文件被解析的每一分钟。 调度会推出的调度模式匹配当前系统时间的文件中声明的每一个过程。报告“ CRON分析器 “段为cron4j调度文件的语法规则。返回索引6。 建立自己的任务一个
21、java.lang.Runnable的对象是最简单的任务,只要有可能,但为了获得控制权,你需要,延长 it.sauronsoftware.cron4j.Task 类。 在最朴素的形式,实现Runnable或延长任务是非常类似的行动:第一,而需要一个run()方法,后者则需要实施 execute(TaskExecutionContext) 。 执行(TaskExecutionContext)方法提供了一个实例it.sauronsoftware.cron4j.TaskExecutionContext ,其中的Runnable.
22、run()方法不提供。 上下文可以用在以下方面:· 其执行任务可以沟通,通知用文字描述其内部状态。 这就是所谓的 状态跟踪 。 如果你有兴趣支持在您的任务状态跟踪,你有覆盖 supportsStatusTracking() 方法,该方法应返回 true。 一旦这项工作已经完成,在 执行(TaskExecutionContext)的 方法,你可以调用的上下文 setStatusMessage(String) 方法。 这将您的任务状态信息传播的执行人
23、。 状态信息,通过执行人,可以检索到外部用户(见“ Executors “段落)。· 其执行任务可以沟通,通知其完整性级别数值。 这就是所谓的 完整性跟踪 。 如果你有兴趣在支持你的任务完整性跟踪,你有覆盖 supportsCompletenessTracking() 方法,该方法应返回 true。 一旦这个工作已经完成,在 执行(TaskExecutionContext) 方法,你用0和1之间的值,可以调用上下文 setCompleteness
24、(double) 方法。 这将传播其执行任务的完整性水平。 可检索的完整性级别,通过执行,外部用户(见“ 执行人 “段)。· 一个任务可以选择暂停。 如果你有兴趣在支持暂停和恢复你的任务,你必须覆盖 canBePaused() 方法,该方法应返回 true。 一旦这项工作已经完成,在 执行(TaskExecutionContext) 方法,你必须定期调用的上下文 pauseIfRequested() 方法。 这将暂停执行任务,直到将被收
25、回(或停止)由外部用户(见“ Executors “段)。· 一个任务可以选择停止。 如果你有兴趣支持停在你的任务,你必须覆盖 canBeStopped() 方法,而应返回 true。 一旦这项工作已经完成,在 执行 (TaskExecutionContext) 方法,你必须定期调用上下文 isStopped() 方法。 这将返回 true,当执行已被要求停止外部用户(见“ Executors “段)。 然后,这是你
26、的责任来处理事件,让你的任务,轻轻地停止其正在进行的活动。· 通过上下文,可以检索任务调度,致电 getScheduler() 。· 通过上下文,可以检索任务的执行人,调用 getTaskExecutor() 。自定义任务可 scheduled, launched immediately 或由返回 task collector. 。返回索引7。 建立你自己的收藏家您可以构建和堵塞在调度自己的任务来源,通过任务收集 API。cron4j调度支持一个或多个实
27、例注册 it.sauronsoftware.cron4j.TaskCollector ,与 addTaskCollector(TaskCollector) 方法。 注册收藏家与,调度 getTaskCollectors() 方法可以检索。调度与 removeTaskCollector(TaskCollector) 方法可以从一个以前注册的收藏家。 收藏家可以添加,查询或删除在每一个时刻,也当调度程序启动和运行。每个注册任务收藏家质疑分钟调度一次。 调度程序调用的的收藏家 ge
28、tTasks() 方法。 实施必须返回 it.sauronsoftware.cron4j.TaskTable的 实例。 在一个TaskTable是一张桌子,联营公司的任务和调度模式。 调度,一旦表已检索,将检查报告的条目,它会执行每一项任务的调度模式匹配当前系统时间。自定义的收藏家可以用来配合外部任务源调度,即一个数据库或XML文件,它可以在运行时管理和改变其内容。返回索引8。 建立自己的调度监听的 it.sauronsoftware.cron4j.SchedulerListener API可以用来听调度
29、事件。SchedulerListener接口需要执行下列方法:· taskSucceeded(TaskExecutor)这个被称为每一个任务调度启动时间。· taskSucceeded(TaskExecutor)这个被称为每一个任务的执行时间已顺利完成。· taskFailed(TaskExecutor, Throwable)这个被称为每次任务执行失败,由于未捕获的异常。看到“ Executors “段的有关任务执行人的更多资讯。一旦你SchedulerListener的实例是准备好了,你可以注册一个 Scheduler对象通过调用其
30、 addSchedulerListener(SchedulerListener) 方法。 已经注册的听众可以删除通过调用removeSchedulerListener(SchedulerListener) 方法。 调度也给回任何已注册的侦听器,的 getSchedulerListeners() 方法。SchedulerListener 可以被添加和删除,在每一个时刻,也同时调度运行。返回索引9。 执行人调度,一旦它已启动并正在运行,可以查询到其执行人 。 一个执行线程是类似的。
31、0;执行人用于调度执行任务。通过调用 Scheduler.getExecutingTasks() 方法可以获取目前正在进行的执行人。您还可以通过获得执行人 SchedulerListener 实例(见“ 建立自己的调度监听 “段)。代表由 it.sauronsoftware.cron4j.TaskExecutor 实例,每个执行人,执行不同的任务执行。与 getTask()等 方法,可以检索任务。执行人的状态,可以检查与 ISALIVE() 方法: 返回
32、 true,如果当前正在运行的执行人。如果执行程序运行时,当前线程暂停执行,直到将完成,调用的 join() 方法。supportsStatusTracking() 方法返回 true,如果当前正在执行的任务,支持状态跟踪 。 这意味着,任务执行人的地位,由字符串表示通信。 当前状态信息可以检索调用的执行人getStatusMessage() 方法。supportsCompletenessTracking() 方法返回 true,如果当前正在执行的任务支持完整性跟踪 。
33、60;这意味着,任务通信执行人自身的完整性级别。 通过调用的执行人 getCompleteness() 方法可以检索当前的完整性级别。 返回值是0(任务刚刚起步,仍然一事无成)和1(任务完成)。canBePaused() 方法返回 true,如果当前正在执行的任务,支持执行暂停 。 这意味着执行任务可以暂停 pause() 方法被调用执行。 与 isPaused() 方法可以检查的执行人暂停状态。 一个暂停执行致电其 简历()
34、0;方法就可以恢复。canBeStopped() 方法返回 true,如果当前正在执行的任务,支持执行中断 。 这意味着可以停止stop() 方法被调用执行,执行任务。 isStopped() 方法可以检查中断状态的执行人。 停止执行人不能恢复。getStartTime() 方法返回一个时间戳报告执行人的起始时间,或值小于0,如果尚未尚未开始执行。getScheduler() 方法返回的调度,这是执行人的所有者。getGuid() 方法返回文本GUID执行人。执行人也提供了一个事件驱动
35、的API,通过 it.sauronsoftware.cron4j.TaskExecutorListener 类。 可以添加一个TaskExecutorListener TaskExecutor接口与它 addTaskExecutorListener(TaskExecutorListener) 方法。 听众可以与 removeTaskExecutorListener(TaskExecutorListener) 方法被删除,他们也可以与检索 getTaskExecutorListeners() 方法
36、。 一个TaskExecutorListener必须实现以下方法:· executionPausing(TaskExecutor)执行人要求暂停正在进行的任务时调用。 给定的参数表示源 TaskExecutor接口 实例。· executionResuming(TaskExecutor)执行人请求恢复执行先前暂停的任务时被调用。 给定的参数表示源 TaskExecutor接口 实例。· executionStopping(TaskExecutor)执行人请求停止执行任务时被调用。 给定
37、的参数表示源 TaskExecutor接口 实例。· executionTerminated(TaskExecutor, Throwable)当执行人已完成任务的执行调用。 第一个参数表示源 TaskExecutor接口 的实例,而第二个是可选的异常,造成任务被终止。 如果任务已顺利完成,给定的值是 空的 。· statusMessageChanged(TaskExecutor, String)所谓每次执行状态消息的变化。 第一个参数表示源 TaskExecutor接口
38、60;的实例,而第二个是新的任务发出的消息。· completenessValueChanged(TaskExecutor, double) 称为每次执行的完整性价值变动。 第一个参数表示源 TaskExecutor接口 的实例,而第二个任务发出的新的完整性值(0和1之间)。返回索引10。 手动任务发射如果调度程序启动并运行,它是可以手动启动任务,没有安排与模式。 该方法是 Scheduler.launch(Task). 任务将立即启动,1 TaskExecutor接口的 instac
39、e返回给调用者。 返回的对象,可用于控制任务的执行(见“ Executors “段)。返回索引11。 使用时区调度的情况下,默认情况下,使用系统默认时区。 即其值0 2 *将激活02:00我按照默认的系统时区的任务调度模式。 调度可以要求使用不同的时区,这是不是系统默认的。 呼叫 Scheduler.setTimeZone(TimeZone) 和 Scheduler.getTimeZone() 来控制此功能。一旦默认时区已被更改,系统当前时间所提供的区域之前注册的调度模式比
40、较适应。 其结果是,任何提供调度模式被视为按照指定的时区。 假设这样的情况:· 系统时间:10:00· 系统时区:GMT+1· 调度时区:GMT+3调度之前,比较系统时间与模式,转换10:00北京时间北京时间。 这意味着,10:00变为12:00。 调度结果的时间,然后用激活任务。 因此,在给定的配置在给定的时刻,将被定为0 12 *任何任务执行,而任何0 10 *不会。返回索引12。 守护线程Java虚拟机退出时正在运行的线程都是守护线程。 可配置的cron4j调度,只产卵的守护线程。
41、0;为了控制这个功能调用的 调度 。 setDaemon(布尔) 方法。 调度开始之前,必须调用此方法。 默认值是 false。 检查调度当前进程的状态调用的 调度 。 isDaemon() 方法。返回索引13。 预测it.sauronsoftware.cron4j.Predictor 类是能够预测时将匹配的调度模式。假设你想知道当调度会执行预定任务模式0 3 *一月至六月,九月十二月周一至周五 。 可以预测未来 n使用预测实
42、例的任务执行:String pattern = "0 3 * jan-jun,sep-dec mon-fri"Predictor p = new Predictor(pattern);for (int i = 0; i < n; i+) System.out.println(p.nextMatchingDate();返回索引14。 cron的解析器it.sauronsoftware.cron4j.CronParser 类可以用来解析像crontab格式的文件和字符流。如果你想安排宣布的任务列表一个crontab类似文件,你不需要的CronParse
43、r,因为你可以通过添加文件与调度, 调度 。 scheduleFile(文件) 的方法。如果在Scheduler.scheduleFile(文件)的方法是不是对你有足够的考虑使用的CronParser,。 例如,您可能需要从远程数据源,这是不是作为一个java.io.File对象(远程服务器上,DBMS的结果集等文件)表示获取任务列表。 为了解决这个问题,你可以实现自己的 it.sauronsoftware.cron4j.TaskCollector ,利用CronParser轻松地分析任何的crontab如内容。可以解析整个文件/流的,但你也可以解析一行。A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025签订购房合同注意事项全面解析
- 人力资源服务平台合同样本
- 2025年秘鲁玛卡项目发展计划
- 房屋拆迁合同模板
- 担保公司四方借款合同
- 付款三方协议建筑合同样本
- 保修协议书范例
- 二零二五版勘探服务合同
- 教师聘任合同二零二五年
- 车辆展厅出租合同范例
- 19S406建筑排水管道安装-塑料管道
- KA-T 20.1-2024 非煤矿山建设项目安全设施设计编写提纲 第1部分:金属非金属地下矿山建设项目安全设施设计编写提纲
- 绿色生活实践
- (2024年)硫化氢安全培训课件
- 《聚焦超声治疗》课件
- 2023-2024学年高一下学期第一次月考(湘教版2019)地理试题(解析版)
- 妇科炎症介绍演示培训课件
- 如康家园管理制度
- 蓄水池工程施工工艺与技术措施
- 2022年4月自考00149国际贸易理论与实务试题及答案含评分标准
- 大数据驱动的药物研发
评论
0/150
提交评论