目前的两个项目中,用到大部分的任务调度,有一些思考简单写下来.
一. 如果当前的任务调度很简单,例如:管理任务延迟执行("如1000ms后执行任务")以及周期性执行("如每500ms执行一次该任务"),那么可以选择Timer 和 scheduledExecutor, 因为scheduledExecutor在JDK1.5才有的,所以如果JDK太老,那只能使用Timer了,但至从JDK1.5之后,建议采用ScheduledExecutorService。,因为Timer是单线程执行任务,即不管有多少个任务在排队,只有一个任务能执行,在任务执行时有很多不确定性,
scheduledExecutor:详细介绍可见:http://ketqi.blog.51cto.com/blog/1130608/687681
二.如果调度比较复杂,则选择quartz,
三.如果希望任务即时调度,即生产一个任务马上就做一个任务,那一般使用消息队列.
前面的任务调度策略,都是估算任务执行时间,例如,源数据从一个DB转存到另外一个DB,一般情况根据数据量估算一个大致的时间,例如,每周六晚上12点进行转存即可,不需要有一条数据就调用转存job去执行,这样的任务调度可以选择Timer\quartz\SchedulerExecutor进行非实时调度.
但是,有的任务调度是需要实时的,例如我现在的项目有以下几个任务,
- 元搜索:在网站上搜索一些有效信息的URL
- 采集:根据搜索到的URL进行采集,并提取采集到作品的特征值
- 比对:对作品的特征值进行比对
- 取证:比对需要维权的项目进行取证
调度这四个任务时,希望,有一条数据就马上执行,这时就应该用MQ,我们在项目中使用的是apache的ActiveMQ,这样当有一个取证任务时,会被马上执行.未完待续,介绍activeMQ(存储要执行的任务)+Executor(任务消费者)配合使用
相关推荐
Java任务调度是软件开发中的一个重要概念,主要用于自动化执行周期性的任务或者在特定时间点执行的任务。Jconch是一个基于Java实现的任务调度框架,它提供了一种简单、灵活的方式来管理和执行计划任务。在这个“java...
标题中的“水库调度java程序,水库调度运行方案,Java”表明了这个压缩包包含的是一个用Java编程语言实现的水库调度系统。水库调度是水资源管理中的一个重要环节,它涉及到对水库来水、用水需求以及出水流量的科学预测...
总结来说,Java调度原理涉及线程创建、优先级、调度策略等多个方面,开发者需要根据具体需求选择合适的调度方式,并合理使用并发工具,以实现高效、稳定的多线程程序。在实际应用中,要时刻注意线程安全,避免死锁、...
在深入讲解这个Java项目之前,首先我们要了解Java在IT行业中的地位。Java是一种广泛使用的面向对象的编程语言,以其“一次编写,到处运行”的特性闻名,尤其在企业级应用开发领域,Java扮演着核心角色。银行业务调度...
在“java 模拟操作系统的进程调度”这个项目中,我们将关注如何使用 Java 来实现这些算法。 1. 先来先服务(FCFS)调度:这种策略是最简单的,按照进程到达的顺序分配 CPU。在 Java 中,可以创建一个队列数据结构...
在项目"diaodu"中,可能包含实现了上述一种或多种调度算法的Java源代码,通过阅读和分析这些代码,我们可以学习到如何在Java中构建一个高效的调度系统,同时也能对调度算法的原理和实践有更深入的理解。
总结来说,这个项目通过Java编程语言,提供了对操作系统页面调度的模拟,有助于学习者深入理解页面调度的工作原理,同时也可以通过修改和扩展代码,研究不同调度策略的性能差异。对于操作系统、内存管理和Java编程的...
然后,调度器会根据所选择的调度策略,对这些进程进行排序,并按照一定的规则分配CPU时间。 `JCB.java`文件可能代表“Job Control Block”(作业控制块),这是一个数据结构,用于存储与进程相关的重要信息,如进程...
在这个Java实现中,我们将深入探讨电梯调度算法的基本原理、常见策略以及如何在Java编程环境中进行模拟。 电梯调度算法的核心目标是有效地服务楼层数字上的请求,以减少乘客的等待时间和电梯的移动距离。这个过程...
这些工具允许开发者定义任务的执行周期、依赖关系,并提供了灵活的调度策略。 Quartz是一款强大的开源作业调度框架,支持集群和多种持久化策略。开发者可以通过API创建Job类,定义任务逻辑,然后通过Scheduler来...
这个话题源于操作系统原理,但在Java环境中,我们可以通过编程实现对进程调度的模拟,以便理解和掌握不同的调度策略。在这个压缩包文件中,可能包含的是一个Java项目,用于演示和学习这些算法。 在操作系统中,进程...
在Java编程语言中,实现调度器是一个常见的任务,它涉及到定时执行特定的代码段或任务。这通常是通过Java中的`java.util.Timer`类或者`java.util.concurrent.ScheduledExecutorService`来实现的。这两个工具提供了...
在计算机科学领域,操作系统是管理计算机硬件与软件资源的核心程序,而进程调度是操作系统中一个至关重要的组成部分。...在实际项目中,根据具体应用场景选择合适的调度算法至关重要,以确保系统的高效稳定运行。
在这个Java编程项目中,我们聚焦于通过Applet实现不同的进程调度算法,这是一种在Web浏览器中运行的小型Java程序。 首先,我们需要理解进程调度的基本概念。在多任务操作系统中,多个进程可以并发执行,但CPU的执行...
在实际的Java进程调度程序中,开发者可能需要结合上述机制,根据具体需求选择合适的调度策略。例如,可以创建一个线程池来管理和调度线程,根据任务的优先级或预计运行时间调整线程的执行顺序。同时,为了保证系统的...
这个项目旨在通过编程模拟真实世界中的电梯运作,帮助开发者理解如何处理并发控制、优化调度策略以及创建交互式应用程序。下面我们将深入探讨相关知识点。 1. **电梯模拟**:电梯模拟通常包括多个组件,如电梯、...
此外,通过查看源代码,学习者还能深入理解JAVA编程语言以及如何在实际项目中应用这些算法。 该程序还暗示了可以扩展到其他调度算法,如短作业优先(SJF)、多级反馈队列(MLFQ)等,这为深入研究和实践提供了可能...
然后,针对每种调度算法,编写对应的调度策略,比如使用优先级队列实现优先级调度,使用栈或队列实现FCFS和RR等。 此外,为了使模拟更接近真实环境,我们还需要考虑以下因素: - 进程的创建和销毁:模拟进程的生命...
在Java实现中,这可能涉及维护一个动态更新的进程列表,根据预测的执行时间排序,并在空闲时选择最短的进程。 **静态优先级调度算法** 静态优先级调度根据进程创建时预设的优先级来决定执行顺序。每个进程都有一个...