在JAVA 的世界里,提到调度工具基本都想到Quartz,今天介绍一个更轻量级的调度工具:Butterfly Scheduling ,Jar包非常小只有20几k,在项目中添加jenkov-butterfly-scheduling-1.3.9-beta.jar,然后就可以测试一下了
一个最简单的实例:
SchedulerTest.java
public class SchedulerTest {
public static void main(String[] args) {
SchedulerService schedulerService = new SchedulerService();
String url = "http://jenkov.com/rss/rss_all.jsp";
UrlTask urlTask = new UrlTask(url);
String commandLine = "help ";
CommandLineTask clTask = new CommandLineTask(commandLine);
IScheduledTaskListener listener = new MyTaskListener();
schedulerService.addScheduledTaskListener(listener);
long timeInterval = 10 * 1000; //one分钟 in milliseconds.
schedulerService.addIntervalScheduledTask(clTask, timeInterval);
schedulerService.addIntervalScheduledTask(urlTask, timeInterval);
// SchedulerService scheduler = new SchedulerService();
// schedulerService.addDailyScheduledTask(urlTask, 3, 30, 0);
// schedulerService.addDailyScheduledTask(clTask, 3, 30, 0);
//Run in current thread
schedulerService.run();
}
}
MyTaskListener.java
public class MyTaskListener implements IScheduledTaskListener {
public void taskScheduled(ScheduledTaskContext scheduledTaskContext) {
System.out.println("Start :" + scheduledTaskContext.getScheduledTask().getTaskName());
}
public void taskFailureScheduled(ScheduledTaskContext scheduledTaskContext) {
//To change body of implemented methods use File | Settings | File Templates.
}
public void taskExecuted(ScheduledTaskContext scheduledTaskContext) {
//get execution result history
List<ScheduledTaskExecutionResult> results =
scheduledTaskContext.getExecutionResults();
//get latest execution result
ScheduledTaskExecutionResult latestResult = results.get(0);
//see if the result was success or not
boolean success = latestResult.getStatus() == ScheduledTaskExecutionResult.SUCCESS;
boolean error = latestResult.getStatus() == ScheduledTaskExecutionResult.ERROR;
System.out.println("end :" + scheduledTaskContext.getScheduledTask().getTaskName());
}
}
分享到:
相关推荐
在IT行业中,调度是至关重要的一个领域,尤其是在工业生产与设备管理中。"scheduling.zip_scheduling_工业调度_设备维护调度_设备调度"这个压缩包文件中的内容显然与优化工业生产过程中的调度策略和设备维护安排有关...
另一个文件“模拟两种进程调度方式”可能是一个可执行程序或源代码,可以直接运行并观察进程调度的动态过程。 总的来说,通过模拟进程调度,我们可以更好地理解如何在多任务环境中有效地分配CPU资源,这对于系统...
两级调度是多道批处理系统中的一个重要概念,用于优化作业的执行效率和系统资源利用率。在这个“多道批处理的两级调度”的项目中,开发者使用Java、Swing和JFormDesigner来模拟这一过程,为学习操作系统和处理机调度...
利用MATLAB仿真软件实现车间调度的源代码
总的来说,这个压缩包提供了一个学习和研究BV调度算法的实践平台。无论是对调度算法感兴趣的科研人员,还是想要提升MATLAB编程技巧的工程师,都能从中获益。通过对源代码的分析和修改,我们可以深入理解实时调度的...
彩票调度算法(Lottery Scheduling)是一种基于概率的任务调度策略,用于操作系统和计算机系统中的任务管理。该算法通过为每个任务分配一定数量的“彩票”,并通过随机抽取彩票的方式来决定哪个任务将获得CPU资源。...
Matpower最优调度工具MOST 1.0.1用户手册是Power Systems Engineering Research Center(PSerc)发布的一款开源软件,用于解决电力系统优化调度问题。该手册详细介绍了MOST的安装、使用和配置,帮助用户快速上手MOST...
城市供水优化调度是现代城市管理中的一个重要领域,涉及到水资源的有效利用、环境保护和经济效益等多个方面。MATLAB作为一款强大的数学计算和建模工具,被广泛应用于优化调度问题的解决,特别是对于多目标优化问题,...
寻道时间是指磁头从一个磁道移动到另一个磁道所需的时间。 接下来,我们来看看几种经典的磁盘调度算法: 1. **先来先服务(FCFS, First-Come, First-Served)**: - FCFS是最简单的调度策略,按照请求到达的顺序...
在这个项目中,你将接触到批处理系统以及两级调度的概念,这些都是操作系统资源管理的关键部分。批处理系统主要是为了提高计算机系统的利用率和吞吐量,通过批量处理用户提交的任务,减少人机交互时间。 批处理系统...
在DAG中,每个节点代表一个任务,边则指示任务的执行顺序。这种表示法非常适合于描述具有任务内并行性的任务,因为它们可以清晰地显示哪些任务可以并行运行,哪些必须在其他任务完成后才能开始。在分布式系统中,DAG...
在IT领域,优化调度是解决复杂问题的一种常见方法,特别是在工程、计算机科学和数学中。本文将深入探讨基于MATLAB的优化调度...对于希望在优化和调度领域进行研究或应用的IT专业人士来说,这是一个值得深入研究的案例。
车间调度问题(Job Shop Scheduling Problem, JSSP)是这类问题的一个典型实例,它涉及到如何有效地安排一系列作业在多个加工阶段上的顺序,以达到最小化完成时间、最大化效率或满足其他特定目标。本话题将深入探讨...
磁盘调度设计,磁盘调度算法的实现,包括  先来先服务调度算法  最短寻道优先调度算法  扫描算法  循环扫描算法  N—Step—SCAN算法
第二级调度则称为进程调度(Process Scheduling),它从内存中的就绪队列中选择一个进程去占用CPU执行。常见的进程调度算法有轮转法(Round Robin)、高响应比优先(HRN)和抢占式调度等。 在报告部分,可能包含了...
#### 一、调度理论概述 《调度理论、算法与系统》第五版由Michael L. Pinedo撰写,是该领域内一部极具权威性的著作。本书全面覆盖了调度理论的基础知识以及最新的研究进展,并深入探讨了各种调度算法及其在实际系统...
Spring Framework 自带的轻量级任务调度组件,适用于简单的定时任务需求。Spring Task 提供了 `@Scheduled` 注解,可以直接在方法上声明定时任务,支持 cron 表达式,方便易用。 ```java import org.spring...
这类算法为每个任务分配一个固定的优先级,优先级高的任务优先执行。 ##### 3.2 静态优先级调度 **EDF(Earliest Deadline First)算法**:基于截止时间最早的任务优先执行的原则,确保了关键任务能够按时完成。 -...
通过MATLAB编程研究工作和仿真结果分析,对改进...在处理复杂优化调度问题方面提出了一些改进的思想,并进行了算法实现和仿真。对有待进一步深入研究的问题进行了设想,对免疫遗传算法解决相关优化调度问题进行了展望。
CPU的优先级调度算法是一种通过为不同任务分配优先级来决定执行顺序的调度策略。这种算法使得系统能够优先处理那些被认为更重要或紧急的任务,从而提高整体效率和响应速度。然而,优先级调度也可能带来一些问题,...