许多项目需要计划功能,例如我们计划的工作,重复的工作,异步执行等。

我们的首选方法是使用企业工作调度程序,例如OpenSymphony的Quartz。

使用计划任务进行编码时,最棘手的部分之一是执行部分。 这里的主要经验法则是注意将要执行的实际代码。 调度框架在后台使用工作线程,以便异步执行代码。 例如,Quartz企业作业调度程序维护一个由主“控制器”线程监控的工作线程池。

您应该记住,调度的作业本质上是异步的,因此引入异步执行层是我们表示保持工作整洁的首选方式。

在过去的很多次中,我们都遇到了这样的难题:让调度框架工作线程执行实际代码,或者实现替代的异步执行层。 每种方法都有其优点和缺点。

使用调度框架执行实际代码,优点:

  1. 需要更少的实施工作
  2. 工作线程由框架“控制器”线程监视
  3. 实施代码在准确的预定时间执行

使用调度框架执行实际代码,缺点:

  1. 实现代码与调度框架共存
  2. 对于“长期存在”的实现代码,例如与外部系统的通信,“繁忙时间”的数据库查询,文件解析,循环等,会引起主要问题,您可能会用尽调度框架工作线程的时间,尤其是在这种情况下在短时间间隔内重复工作。

我们想认为调度框架应该充当“调度程序”而不是“执行者”。 计划框架的主要职责应该是在适当的时间“触发”执行事件。 应使用事件侦听器执行代码的实际执行。

实现此设计模式的最佳方法是使用异步JMS消息传递。 调度框架工作线程应在执行时将消息插入JMS队列。 JMS侦听器线程应在收到消息后执行实际代码。 这样做会由于JMS的读/写开销而在实际代码执行之前引入一些延迟,但是“长期存在”的实现代码不会对调度框架造成任何问题。

翻译自: https://www.javacodegeeks.com/2010/05/scheduling-principals-in-java.html

调度Java应用程序中的主体相关推荐

  1. io调度maple调度程序_调度Java应用程序中的主体

    io调度maple调度程序 许多项目需要计划功能,例如我们计划的工作,重复的工作,异步执行等. 我们的首选方法是使用企业作业调度程序,例如OpenSymphony的Quartz. 使用计划任务进行编码 ...

  2. Java web程序中备份oracle数据库

    Java web程序中备份oracle数据库 1.生成备份文件: public ActionForward createDmp(ActionMapping mapping, ActionForm fo ...

  3. 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南

    如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...

  4. elastic search java_在 Java 应用程序中使用 Elasticsearch

    如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...

  5. 网络研讨室_免费网络研讨会:Java应用程序中的吞咽异常

    网络研讨室 1月30日参加我们的网络研讨会,以发现Java应用程序中的"隐藏"异常. 如果一棵树落在森林中,但是没有写到原木上,它会发出声音吗? 答案是肯定的. 这些类型的错误可能 ...

  6. lombok 生成代码_使用Project Lombok减少Java应用程序中的样板代码

    lombok 生成代码 对Java编程语言最常提出的批评之一是它需要大量的样板代码 . 对于简单的类尤其如此,该类只需要存储一些值就可以. 您需要这些值的getter和setter方法,也许您还需要一 ...

  7. 免费网络研讨会:Java应用程序中的吞咽异常

    1月30日参加我们的网络研讨会,以发现Java应用程序中的"隐藏"异常. 如果一棵树落在森林中,但是没有写到原木上,它会发出声音吗? 答案是肯定的. 这些类型的错误可能会对用户体验 ...

  8. java程序中用户名和密码_在Java应用程序中使用密码术

    java程序中用户名和密码 这篇文章描述了如何使用Java密码体系结构 (JCA),该体系结构使您可以在应用程序中使用密码服务. Java密码体系结构服务 JCA提供了许多加密服务,例如消息摘要和签名 ...

  9. 使用Project Lombok减少Java应用程序中的样板代码

    对Java编程语言最常提出的批评之一是它需要大量的样板代码 . 对于简单的类尤其如此,该类只需要存储一些值就可以. 您需要这些值的getter和setter,也许您还需要一个构造函数,覆盖equals ...

最新文章

  1. 自动人脸识别基本原理
  2. 小程序简单封装 request 请求
  3. 多线程:什么是ThreadLocal?应用场景?
  4. 使用 FTP 迁移 SQL Server 数据_迁移数据_快速入门(SQL Server)_云数据库 RDS 版-阿里云...
  5. iOS----------使用cocoapods遇到的问题
  6. php register_shutdown_function响应error 配合error_get_last 捕获错误
  7. PHP中生成UUID
  8. django-关联查询-通过模型类跨表关联查询
  9. js 学习笔记(一)
  10. mt4交易软件云服务器_MT4软件使用教程1常见货币对交易图表类型
  11. 全球首发!惯性导航导论(剑桥大学)第五部分
  12. BeautifulSoup模块过滤掉html标签,只拿文本内容(处理XSS攻击)
  13. cesium 取消光晕
  14. [MySQL学习]Innodb锁相关描述翻译
  15. 主键和外键举例_数据库-主键和外键及其约束
  16. linux部署k8s教程
  17. scrum敏捷开发项目管理工具必备
  18. 【华人学者风采】周明 微软亚洲研究院
  19. 同时被三个面试官面试_工作面试官犯的5个错误
  20. Python|tkinter+matplotlib实现给老铁的生日礼物

热门文章

  1. 托管 非托管_如何在托管的Kubernetes上备份Neo4J
  2. java联接pg库_Java14:使用Java 14的新记录联接数据库表
  3. selenium自动化测试_Selenium测试可实现有效的测试自动化
  4. jakarta ee_适用于Java EE / Jakarta EE开发人员的Micronaut
  5. log4j2 xsd_Log4j 2.x XSD的描述不完整
  6. eclipse开发jsf_在Eclipse上创建JSF / CDI Maven项目
  7. 魔术笔反选_魔术二传手反图案
  8. Java:从Java 8开始受益于内联类属性
  9. 怎样编写测试类测试分支_编写干净的测试–从配置开始
  10. 詹金斯搭建_与詹金斯一起连续交付Heroku